如何在列表中找到重复的值? 总是只有一个重复值
例如:
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
答案 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 .....")