如何在Python中比较数组中的值 - 判断两个值是否相同
我有一个包含50个整数的数组,我需要检查这50个整数中是否有重复的。如果有重复的,我就需要执行某个操作。
我该怎么做呢?我知道在Python中好像没有直接可以做到这一点的函数,对吧?
5 个回答
2
如果你的操作需要知道某个数字在输入列表中出现了多少次,那么使用 groupby
是个不错的选择。
>>> from itertools import groupby
>>> for x in groupby([1,1,2,2,2,3]):
... print x[0],len(list(x[1]))
...
1 2
2 3
3 1
第一个数字是元素,第二个数字是它出现的次数。groupby
是在一个已经排好序的列表上工作的,所以一定要先把你的输入列表排序,比如说。
>>> for x in groupby(sorted([1,1,2,4,2,2,3])):
... print x[0],len(list(x[1]))
...
1 2
2 3
3 1
4 1
5
如果你使用的是 Python 2.7 及以上版本,你可以使用 Counter
这个工具。
>>> import collections
>>> input = [1, 1, 3, 6, 4, 8, 8, 5, 6]
>>> c = collections.Counter(input)
>>> c
Counter({1: 2, 6: 2, 8: 2, 3: 1, 4: 1, 5: 1})
>>> duplicates = [i for i in c if c[i] > 1]
>>> duplicates
[1, 6, 8]
10
如果你的意思是你有一个列表,想知道里面有没有重复的值,那你可以把这个列表转换成一个集合,然后看看这个集合的长度是否比列表短:
if len(set(my_list)) < len(my_list):
print "There's a dupe!"
不过这样做并不能告诉你具体重复的值是什么。