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

2024-04-26 07:41:04 发布

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

如果我有这个名单

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

我怎样才能让它读到列表,告诉我它们是否都一样?

我知道在这个例子中很容易看出它们并不完全相同。我有更大的名单,我想它读给我。

我是否可以使用:

min(...)

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


Tags: 列表min例子名单mylist
2条回答

你可以用这样的布景

len(set(mylist)) == 1

说明

集合仅存储其中的唯一项。所以,我们尝试将列表转换为一个集合。转换后,如果集合中有多个元素,则表示列表中的元素并非都相同。

注意:如果列表有不可更改的项(如列表、自定义类等),则不能使用set方法。但我们可以使用@false tru建议的第一种方法

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

优势:

  1. 它甚至可以用于不可更改的类型

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

  3. 第一次故障后短路。如果第一个和第二个元素不匹配,它将立即返回False,而在set方法中,必须比较所有元素。所以,如果列表很大,您应该选择all方法。

  4. 即使列表实际上是空的,它也能工作。如果iterable中没有元素,all将返回True。但是空列表将创建一个长度为0的空set

使用^{}generator expression

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

备选方案:

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

注意一旦发现列表中有任何不同的项,第一个项将立即停止,而另一个项则不会停止。

相关问题 更多 >