Stack_Over
Stack_Over

Reputation: 21

How can I select a specific number in a list with duplicates without removing the previous same values?

I have the following list in python3:

a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]

I want to have something like this as an output:

b = [1, 2, 3, 1, 2, 4, 3]

How can I do that? I have tried a = set(a) and other methods for getting rid of duplicates. But they remove all duplicates.

Upvotes: 0

Views: 220

Answers (3)

cross-hello
cross-hello

Reputation: 65

If you comfortable with C, you may like this style:

a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]
b=len(a)
i=0
last_one=None
while i<b:
    if a[i]==last_one:
        del a[i]
        b-=1
        continue
    else:
        last_one=a[i]
    i+=1
print(a)



Upvotes: 0

j1-lee
j1-lee

Reputation: 13939

If you are willing to use a module, you can use itertools.groupby:

from itertools import groupby

a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]

output = [k for k, _ in groupby(a)]
print(output) # [1, 2, 3, 1, 2, 4, 3]

Upvotes: 1

kpie
kpie

Reputation: 11110

This would work:

a = [1, 1, 1, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 4, 4, 4, 3, 3, 3, 3]
b = [a[0]]
for k in a:
    if k!=b[-1]:
        b.append(k)
print(b)

Upvotes: 0

Related Questions