/ / Як надрукувати повторювані елементи у списку, не надрукувавши перше виникнення? - пітон, список

Як надрукувати повторювані елементи у списку без друку першої події? - пітон, список

В list = [1,2,1,1,1,2,3,4] Я б хотів надрукувати вихід як [1,1,1,2] що полягає у друкуванні дублікатів у списку, не надрукувавши перший раз, коли вони виникли в python.

Будь-яка допомога буде вдячна. Дякую.

Відповіді:

5 за відповідь № 1

Просте рішення - визначити функцію, яка використовує set відстежувати побачені предмети. Якщо предмет не відображається, додайте його до набору. Якщо його бачать, дайте цей предмет.

Якщо ви загорнуте це в генератор, ви маєте перевагу зробити цей процес лінивим, що корисно у великих списках, коли вам потрібно лише повторити результати.

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

def dups(x):
seen = set()
for i in x:
if i not in seen:
seen.add(i)
else:
yield i

res = list(dups(lst))

[1, 1, 1, 2]

3 для відповіді № 2

Один із способів цього досягти:

a = [1,2,1,1,1,2,3,4]
read_so_far = set()
result = []

for val in a:
if val in read_so_far:
result.append(val)
else:
read_so_far.add(val)

print(result)

[1, 1, 1, 2]


-1 для відповіді № 3
from collections import Counter

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

c1 = Counter(original_list)
c2 = Counter(set(original_list))

c1.subtract(c2)

print(list(c1.elements()))