В 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()))