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

2024-04-20 03:54:21 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在列表中找到重复值? 始终只有一个重复值

例如:

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

Tags: infalsetrue列表forlenifrange
3条回答

如果您不介意使用numpy:

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

。。。将获取数组([3])

你应该检查一下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

记录用^{} object看到的数字,已经在集合中的第一个数字重复:

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

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

相关问题 更多 >