2024-04-26 07:41:04 发布
网友
如果我有这个名单
mylist = ['n', 'n', '4', '3', 'w']
我怎样才能让它读到列表,告诉我它们是否都一样?
我知道在这个例子中很容易看出它们并不完全相同。我有更大的名单,我想它读给我。
我是否可以使用:
min(...)
如果是,我将如何输入每个列表项?
你可以用这样的布景
len(set(mylist)) == 1
说明
集合仅存储其中的唯一项。所以,我们尝试将列表转换为一个集合。转换后,如果集合中有多个元素,则表示列表中的元素并非都相同。
注意:如果列表有不可更改的项(如列表、自定义类等),则不能使用set方法。但我们可以使用@false tru建议的第一种方法
set
all(x == mylist[0] for x in mylist)
优势:
它甚至可以用于不可更改的类型
它不会在内存中创建另一个临时对象。
第一次故障后短路。如果第一个和第二个元素不匹配,它将立即返回False,而在set方法中,必须比较所有元素。所以,如果列表很大,您应该选择all方法。
False
all
即使列表实际上是空的,它也能工作。如果iterable中没有元素,all将返回True。但是空列表将创建一个长度为0的空set。
True
使用^{}和generator expression:
备选方案:
mylist.count(mylist[0]) == len(mylist)
注意一旦发现列表中有任何不同的项,第一个项将立即停止,而另一个项则不会停止。
你可以用这样的布景
说明
集合仅存储其中的唯一项。所以,我们尝试将列表转换为一个集合。转换后,如果集合中有多个元素,则表示列表中的元素并非都相同。
注意:如果列表有不可更改的项(如列表、自定义类等),则不能使用
set
方法。但我们可以使用@false tru建议的第一种方法优势:
它甚至可以用于不可更改的类型
它不会在内存中创建另一个临时对象。
第一次故障后短路。如果第一个和第二个元素不匹配,它将立即返回
False
,而在set
方法中,必须比较所有元素。所以,如果列表很大,您应该选择all
方法。即使列表实际上是空的,它也能工作。如果iterable中没有元素,
all
将返回True
。但是空列表将创建一个长度为0的空set
。使用^{} 和generator expression:
备选方案:
注意一旦发现列表中有任何不同的项,第一个项将立即停止,而另一个项则不会停止。
相关问题 更多 >
编程相关推荐