如果我有这个列表;如何检查列表中的所有元素是否相同?
mylist = ['n', 'n', '4', '3', 'w']
我如何得到它来读取列表,并告诉我,他们是否都一样?
我知道,在这个例子中很容易判断它们并不完全相同。我有更大的列表,我希望它为我阅读。
我会去这个使用:
min(...)
如果是的话,我将如何输入每个列表项?
如果我有这个列表;如何检查列表中的所有元素是否相同?
mylist = ['n', 'n', '4', '3', 'w']
我如何得到它来读取列表,并告诉我,他们是否都一样?
我知道,在这个例子中很容易判断它们并不完全相同。我有更大的列表,我希望它为我阅读。
我会去这个使用:
min(...)
如果是的话,我将如何输入每个列表项?
您可以使用这样设置
len(set(mylist)) == 1
说明
台店在他们唯一的唯一项目。所以,我们尝试将列表转换为一个集合。转换后,如果集合中有多个元素,则表示并非列表中的所有元素都是相同的。
注意:如果列表中有不可更新的项目(如列表,自定义类等),则不能使用set
方法。但是,我们可以使用@falsetru建议第一种方法,
all(x == mylist[0] for x in mylist)
优点:
它甚至与unhashable类型
它不会在创建另一个临时对象的工作原理记忆。
第一次故障后短路。如果第一个和第二个元素不匹配,则立即返回False
,而在set
方法中,必须对所有元素进行比较。所以,如果名单很大,你应该更喜欢all
方法。
即使列表实际上是空的,它也可以工作。如果迭代中没有元素,all
将返回True
。但空单将创建一个空set
对于其长度为0。
all(x == mylist[0] for x in mylist)
备选:
mylist.count(mylist[0]) == len(mylist)
注意第一只要发现列表中有任何不同的项目,就会停下来,而替代项目则不会。
这真的很聪明 – Tyler
希望我的心灵可以像这样工作:P – Gogo
请注意,这只适用于可排列的物品。在清单列表中执行此操作将不起作用。 –