我知道关于这个特定主题已经有很多问题,但我找不到适合我问题的解决方案。
我有输入:
2, 20, 15, 16, 17, 3, 8, 10, 7
我想看看我的代码中是否有“双重”数字。我试过使用这段代码。
lijst = input('Give a list: ')
teller = 0
for i in lijst.split(','):
if lijst.count(i) != 1:
teller += 1
print(teller != 0)
通常我应该得到False,因为给定列表中没有双重数字。但是,我接受了True。我建议那是因为2也出现在20。
True
有谁知道如何避免这个问题,所以'2'不计算两次?
答案 0 :(得分:2)
您可以使用collections.Counter
来完成
>>> data = [2, 20, 15, 16, 17, 3, 8, 10, 7]
>>> from collections import Counter
>>> Counter(data)
Counter({2: 1, 3: 1, 7: 1, 8: 1, 10: 1, 15: 1, 16: 1, 17: 1, 20: 1})
>>>
计算出现次数并返回带有键的dict指示项目,值为出现次数。
如果您只是需要知道是否有重复,无论重复哪个项目,您只需在列表上使用Set
并查看len()
算账:
len(data) == len(set(data))
答案 1 :(得分:1)
您可以将输入的长度与输入中唯一元素集的长度进行比较:
def has_repeated_elements(input):
"""returns True if input has repeated elements,
False otherwise"""
return len(set(input)) != len(input)
print(not has_repeated_elements(input))