如何检查列表中是否存在重复值并获取该值

时间:2014-08-28 19:28:23

标签: python list python-2.7 for-loop

如何在列表中找到重复的值? 总是只有一个重复值

例如:

numbers=[1,2,3,4,5,3]

我需要获得值3

这就是我的尝试,但它有时会打印相同列表的值2次。

endLoop=False
    for n1 in range(0,len(numbers)):
        for n2 in range(1,len(numbers)):
            if numbers[n1]==numbers[n2]:
                print numbers
                print numbers[n1]
                endLoop=True
        if endLoop:
            break

6 个答案:

答案 0 :(得分:7)

跟踪您使用set() object看到的数字,重复该组中已有的第一个数字:

def find_repeat(numbers):
    seen = set()
    for num in numbers:
        if num in seen:
            return num
        seen.add(num)

这是查找第一个重复值的有效方法,因为一旦找到它,就不必查看其余的数字。

答案 1 :(得分:2)

如果你不介意使用numpy:

numbers = [1,2,3,4,5,3]
counts = np.bincount( numbers )
np.where([ counts > 1 ])[1]

...会得到你的数组([3])

答案 2 :(得分:2)

有一种更简单的方法可以做到这一点。使用.count()关键字。 你可以做这样的事情

for n in numbers:
    if numbers.count(n)>1:
        print("Repeated number: ",n)

答案 3 :(得分:1)

您应该检查n1 != n2

因为您的计划会检查numbers[1] == numbers[1]并在1位置打印该值,即使只有一个值等于numbers[1]

所以代码看起来像:

for n1 in range(0,len(numbers)):
    for n2 in range(1,len(numbers)):
        if numbers[n1]==numbers[n2] and n1 != n2:
            print numbers
            print numbers[n1]
            endLoop=True
    if endLoop:
        break

答案 4 :(得分:0)

这是一个班轮。

set([x for x in _list if _list.count(x) > 1])

答案 5 :(得分:0)

g=int(input("how many digits?"))
n=int(input("enter a number"))
c=0
k=0
k=n
for i in range(0,g):
    While  (n!=0):
               r=n%10
               n=n//10
               r1=n%10
               If (r==r1):
                               c=c+1
 if (c>0):
     print("reparation is there")
 else:
     print("no repeatation .....")