在lis中检测相同的值

2024-06-09 23:18:24 发布

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

我目前正在做一个数独游戏,因为验证背后的逻辑非常有趣的代码,有很多方法可以做到这一点。你知道吗

我的问题很简单。python中是否有函数检查一个值是否多次出现在列表中?你知道吗

我做了一个小函数来实现这个功能,它是有效的:

def IsRepeated(list):
    overlap = False 
    for index, val in enumerate(list):
        for step in range(index+1, len(list)):
            if val == list[step]:
                overlap = True
                break
        if overlap:
            break
    return overlap

输入是一个类似a = [1,2,3,4,5,6]的列表

这是完美的,但我想确保没有其他更好的方法来做到这一点,因为通常有。你知道吗


Tags: 方法函数代码in游戏列表forindex
3条回答

使用Python控制台的示例:

>>> a=[1,2,3,4,5,6,6]
>>> set(a)
{1, 2, 3, 4, 5, 6}
>>> len(set(a))
6
>>> len(a)
7
>>> if len(set(a)) != len(a):
...    print("Yes, there is some value present in a list more than once.")
...
Yes, there is some value present in a list more than once.

对于a=[1,2,3,4,5,6,6]

np.unique(a)[np.where(np.array([len(np.where(a==i)[0]) for i in np.unique(a)])>1)[0]]

这将为您提供多次出现的元素列表。你知道吗

没有确切的函数可以实现这个目的。但您可以利用Counter使其更高效、更简短:

from collections import Counter

def IsRepeated(lst):
    return any(v > 1 for v in Counter(lst).values())

a = [1,2,3,4,5,6]
print(IsRepeated(a))
# False

顺便说一句,不要把你的列表命名为list,因为它隐藏了内置的。你知道吗

相关问题 更多 >