Home > Software engineering >  Copy an Array and delete doubles
Copy an Array and delete doubles

Time:11-28

I got this code

A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9]
B = [0 for b in range(16)]
skipped = 0
for i in range(16):
 if  A[i] == A[i-1]:
     skipped  = 1
 else:
    B[i-skipped] = A[i]

print(B)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

The output:

[1, 2, 3, 4, 5, 2, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0]
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

it eliminates the doubles. But if i got an array where doubles are at more random index it fails, like:

The Array#2:

A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 2, 2, 2, 7, 8, 8, 9]
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

The output#2

[1, 2, 3, 4, 5, 2, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0]
<iframe name="sif4" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

In the output#2 there is the value 2 at index 1 and index 5, but i just want to eliminate all the doubles.

Sum: So basically my algorithm should copy the values from Array A to Array B and eliminate all doubles independent from their index.

EDIT: i have to put it in pseudocode so i cant use convert methods or functions like SET

CodePudding user response:

You can use set to do it:

A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9]
B = set(A)
print(B)

This code returns a set. To convert set to list you can write some_list = list(B).

Another way to do what you need:

A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9]
B = []
for x in A:
    if x not in B:
      B.append(x)
print(B)
  • Related