python – How to replace repeated values ​​in a list?

Question:

I am asked to write a procedure that accepts as a parameter a vector containing positive numbers, which can contain duplicate values, and replaces each repeated element with -1 (minus one). The procedure must return the modified vector and the number of times it was modified. I did it like this:

vector = [1,2,3,4,4,3] 
for i in range(0,6): 
    if vector[i] == vector[i]: 
       vector[i] = -1 
print(vector) 

but it replaces all the numbers by -1 not only the repeated ones.

Answer:

One solution is to traverse the array checking each element ( vector[i] ) against previous elements ( vector[:i] ).

I put the code in a function

def examinar(vector):
    for i in range(1, len(vector)):
        if vector[i] in vector[:i]:
            vector[i] = -1
    return vector

and i taste it

tests = [[],
         [100],
         [100, 100],
         [1, 2, 3, 4],
         [1, 2, 2, 4],
         [5, 5, 5, 4, 5],
         [-1, -1, 3, 100, 200, 3]]

for test in tests:
    print(test, end=" => ")
    print(examinar(test))

produce

[] => []
[100] => [100]
[100, 100] => [100, -1]
[1, 2, 3, 4] => [1, 2, 3, 4]
[1, 2, 2, 4] => [1, 2, -1, 4]
[5, 5, 5, 4, 5] => [5, -1, -1, 4, -1]
[-1, -1, 3, 100, 200, 3] => [-1, -1, 3, 100, 200, -1]
Scroll to Top