如何在Python中比较数组中的值 - 判断两个值是否相同

5 投票
5 回答
22497 浏览
提问于 2025-04-16 22:00

我有一个包含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!"

不过这样做并不能告诉你具体重复的值是什么。

撰写回答