如果我有这个清单;
mylist = ['n', 'n', '4', '3', 'w']
如何让它阅读清单,并告诉我它们是否完全相同?
我知道在这个例子中很容易说出它们并不完全相同。我有更大的列表,我希望它能为我阅读。
我会使用以下方式解决这个问题:
min(...)
如果是这样,我将如何输入每个列表项?
答案 0 :(得分:13)
你可以像这样使用
len(set(mylist)) == 1
<强>解释强>
仅在商店中存储唯一商品。因此,我们尝试将列表转换为集合。转换后,如果集合中包含多个元素,则表示并非列表中的所有元素都相同。
注意:如果列表中包含不可用项(如列表,自定义类等),则无法使用set
方法。但我们可以使用@falsetru,
all(x == mylist[0] for x in mylist)
<强>优点:强>
它甚至适用于不可用的类型
它不会在内存中创建另一个临时对象。
第一次失败后发生短路。如果第一个和第二个元素不匹配,则立即返回False
,而在set
方法中,必须比较所有元素。因此,如果列表很大,您应该更喜欢all
方法。
即使列表实际为空,它仍然有效。如果可迭代中没有元素,all
将返回True
。但是空列表将创建一个空set
,其长度为0。
答案 1 :(得分:8)
all(x == mylist[0] for x in mylist)
替代:
mylist.count(mylist[0]) == len(mylist)
注意第一个会在发现列表中有任何不同项目时立即停止,而替代品则不会。