如何在Python中比较数组中的值 - 找出2个值是否相同

时间:2011-07-21 17:17:51

标签: python arrays list

我基本上有一个50个整数的数组,我需要找出50个整数中的任何一个是否相等,如果它们是,我需要执行一个动作。

我该怎么做呢?据我所知,目前Python中没有一个函数可以实现吗?

5 个答案:

答案 0 :(得分:9)

如果你的意思是你有一个列表而你想知道是否有任何重复的值,那么从列表中创建一个集合,看它是否比列表短:

if len(set(my_list)) < len(my_list):
    print "There's a dupe!"

但这并不会告诉你重复的值是什么。

答案 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]

答案 2 :(得分: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

答案 3 :(得分:1)

您可以将列表转换为Set,并检查它们的长度。

>>> a = [1, 2, 3]
>>> len(set(a)) == len(a)
True
>>> a = [1, 2, 3, 4, 4]
>>> len(set(a)) == len(a)
False

答案 4 :(得分:0)

>>> arbitrary_list = [1, 1, 2, 3, 4, 4, 4]
>>> item_occurence = dict([(item, list.count(item)) for item in arbitrary_list])
{1: 2, 2: 1, 3: 1, 4: 3}

如果您想查看哪些值不唯一,可以通过

获取这些值的列表
>>> filter(lambda item: item_occurence[item] > 1, item_occurence)
[1, 4]