我知道这可能是一个简单的答案,但我无法弄清楚。Python中将重复项保存在列表中的最佳方法是什么:
x = [1,2,2,2,3,4,5,6,6,7]
输出应该是:
[2,6]
我找到了这个链接:Find (and keep) duplicates of sublist in python,但我对 Python 还是比较陌生,我不能让它为一个简单的列表工作。
我知道这可能是一个简单的答案,但我无法弄清楚。Python中将重复项保存在列表中的最佳方法是什么:
x = [1,2,2,2,3,4,5,6,6,7]
输出应该是:
[2,6]
我找到了这个链接:Find (and keep) duplicates of sublist in python,但我对 Python 还是比较陌生,我不能让它为一个简单的列表工作。
我会使用collections.Counter
:
from collections import Counter
x = [1, 2, 2, 2, 3, 4, 5, 6, 6, 7]
counts = Counter(x)
output = [value for value, count in counts.items() if count > 1]
这是另一个版本,它保留了第一次复制项目的顺序,它只假设传入的序列包含可散列的项目,并且它会回到何时set
或被yeild
引入该语言(无论何时)。
def keep_dupes(iterable):
seen = set()
dupes = set()
for x in iterable:
if x in seen and x not in dupes:
yield x
dupes.add(x)
else:
seen.add(x)
print list(keep_dupes([1,2,2,2,3,4,5,6,6,7]))
如果列表已经排序,这是一种简短的方法:
x = [1,2,2,2,3,4,5,6,6,7]
from itertools import groupby
print [key for key,group in groupby(x) if len(list(group)) > 1]
保持简单:
array2 = []
aux = 0
aux2=0
for i in x:
aux2 = i
if(aux2==aux):
array2.append(i)
aux= i
list(set(array2))
那应该工作
效率不高,但只是为了获得输出,您可以尝试:
import numpy as np
def check_for_repeat(check_list):
repeated_list = []
for idx in range(len(check_list)):
elem = check_list[idx]
check_list[idx] = None
if elem in temp_list:
repeated_list.append(elem)
repeated_list = np.array(repeated_list)
return list(np.unique(repeated_list))