为什么重复的项目连续出现两次?

时间:2019-10-06 12:52:02

标签: python python-3.x

我正在尝试找出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中。我要去哪里错了?

5 个答案:

答案 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中存储的值不重复

相关问题