检查list/tuple/etc中是否有2个或3个元素具有相同的值。

2024-09-27 23:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个5个元素的列表,我想知道是有2个还是3个相等的元素(或者2个相等,3个相等)。这个“检查”是if条件的一部分。比如说我太懒或太笨了,不会写:

if (a==b and c==d and c==e) or .......... or .........

我知道可能是这样写的,但不完全是怎么写的:

^{pr2}$

我该怎么做?我也知道你可以写一些类似的东西:

if (x,y for x in [5element list] for y in [5element list] x==y, x not y: 

Tags: orandin元素列表forifnot
3条回答

使用count。你只要[i for i in myList if myList.count(i) > 1]。此列表包含重复的元素,如果它不是空的,则有重复的元素。在

编辑:SQL!=python,删除了'where',对于更大的列表,这个速度会变慢,但是对于5个元素就可以了。在

您可以使用collections.Counter,它计算列表中每个元素的出现次数。 一旦您有了计数,只需检查您想要的值(2或3)是否存在于计数中。在

from collections import Counter
my_data = ['a', 'b', 'a', 'c', 'd']
c=Counter(my_data)
counts = set(c.values())
print 2 in counts or 3 in counts

如果您只想检查多个出现,并且对象是散列类型,那么下面的解决方案可以为您工作。在

你可以创建一个对象列表

>>>l = [a, b, c, d, e]

然后,可以从同一个列表创建一个集合,并比较列表的长度和集合的长度。如果集合的元素少于列表中的元素,则您知道必须有多个出现。在

^{pr2}$

相关问题 更多 >

    热门问题