我目前正在开发Sudoku游戏,因为验证背后的逻辑非常有趣,并且有很多方法可以实现。
我的问题很简单。 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]
这很完美,但是我想确保没有其他更好的方法可以做到这一点,
答案 0 :(得分: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.
答案 1 :(得分:2)
没有确切的功能可以实现此目的。但是您可以使用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
,因为它会遮盖内置列表。
答案 2 :(得分:1)
对于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]]
这将为您提供出现多次的元素列表。