我正在尝试找出list
中所有重复项的列表。
我的代码:
list=['see','eat','feel','see','eat']
i=0
j=0
l=[]
for i in range(len(list)-1):
j=i+1
for j in range(len(list)):
if (list[i]==list[j]):
l.append(list[i])
print(l)
预期输出:
['see', 'eat']
实际输出:
['see', 'see', 'eat', 'eat', 'feel', 'see', 'see']
重复项只能在list
中。我要去哪里错了?
答案 0 :(得分:3)
您可以只使用collections.Counter()
标准库类来获得更有效的方法。
import collections
lst = ['see','eat','feel','see','eat']
lst_counts = collections.Counter(lst)
duplicates = [value for (value, count) in lst_counts.items() if count > 1]
print(duplicates)
输出
['see', 'eat']
答案 1 :(得分:3)
这两行:
j=i+1
for j in range(len(list)):
首先给j
赋值,然后在for循环中让它从0一直循环到len(list),然后将值忘记。那不是你的意思。
相反
for j in range(i+1, len(list)):
我想,你会做什么?
但是,如果某些值出现了三次,那仍然给您带来问题。
答案 2 :(得分:1)
您可以使用如下列表理解功能
ls=['see','eat','feel','see','eat']
[ls[i] for i in range(len(ls)) for j in range(len(ls)) if (j>i and ls[i]==ls[j])]
答案 3 :(得分:0)
您必须循环播放,因此您可以获得两个单词对的所有组合。
最好,只使用一个循环,并跟踪重复的元素:
seen = set()
duplicates = set()
for item in list:
if item in seen:
duplicates.add(item)
else:
seen.add(item)
答案 4 :(得分:0)
尝试一下:
l=[]
for i in list:
c=0
for j in list:
if i==j :
c+=1
if c!=1:
flag=0
for k in l:
if k==i:
flag=1
if flag==0:
l.append(i)
print(l)
在这段代码中,我使用了三个循环 1.重复每个值来检查磨损是否重复 2.重复每个值并将它们进行比较。请注意,重复值将使c中的值等于或大于2 3.检查天气l中存储的值不重复