如何检查列表中的所有元素是否相同?

时间:2014-03-07 03:01:48

标签: python list python-2.7

如果我有这个清单;

mylist = ['n', 'n', '4', '3', 'w']

如何让它阅读清单,并告诉我它们是否完全相同?

我知道在这个例子中很容易说出它们并不完全相同。我有更大的列表,我希望它能为我阅读。

我会使用以下方式解决这个问题:

min(...)

如果是这样,我将如何输入每个列表项?

2 个答案:

答案 0 :(得分:13)

你可以像这样使用

len(set(mylist)) == 1

<强>解释

仅在商店中存储唯一商品。因此,我们尝试将列表转换为集合。转换后,如果集合中包含多个元素,则表示并非列表中的所有元素都相同。

注意:如果列表中包含不可用项(如列表,自定义类等),则无法使用set方法。但我们可以使用@falsetru,

建议的第一种方法
all(x == mylist[0] for x in mylist)

<强>优点:

  1. 它甚至适用于不可用的类型

  2. 它不会在内存中创建另一个临时对象。

  3. 第一次失败后发生短路。如果第一个和第二个元素不匹配,则立即返回False,而在set方法中,必须比较所有元素。因此,如果列表很大,您应该更喜欢all方法。

  4. 即使列表实际为空,它仍然有效。如果可迭代中没有元素,all将返回True。但是空列表将创建一个空set,其长度为0。

答案 1 :(得分:8)

使用allgenerator expression

all(x == mylist[0] for x in mylist)

替代:

mylist.count(mylist[0]) == len(mylist)

注意第一个会在发现列表中有任何不同项目时立即停止,而替代品则不会。