我需要一个函数,它接受一个列表并输出True,如果输入列表中的所有元素使用标准相等运算符计算彼此相等,否则输出False。
我觉得最好是遍历列表,比较相邻的元素,然后与所有结果布尔值。但我不知道最python的方法是什么。
我需要一个函数,它接受一个列表并输出True,如果输入列表中的所有元素使用标准相等运算符计算彼此相等,否则输出False。
我觉得最好是遍历列表,比较相邻的元素,然后与所有结果布尔值。但我不知道最python的方法是什么。
当前回答
关于使用reduce()和lambda。这里有一个工作代码,我个人认为比其他一些答案更好。
reduce(lambda x, y: (x[1]==y, y), [2, 2, 2], (True, 2))
返回一个元组,其中第一个值是布尔值,如果所有项都相同或不相同。
其他回答
或者使用numpy的diff方法:
import numpy as np
def allthesame(l):
return np.all(np.diff(l)==0)
并呼吁:
print(allthesame([1,1,1]))
输出:
True
这是另一个选项,对于长列表,比len(set(x))==1快(使用短路)
def constantList(x):
return x and [x[0]]*len(x) == x
def allTheSame(i):
j = itertools.groupby(i)
for k in j: break
for k in j: return False
return True
适用于Python 2.4,它没有“all”。
检查是否所有元素都等于第一个。
np。allclose(数组,数组[0])
关于使用reduce()和lambda。这里有一个工作代码,我个人认为比其他一些答案更好。
reduce(lambda x, y: (x[1]==y, y), [2, 2, 2], (True, 2))
返回一个元组,其中第一个值是布尔值,如果所有项都相同或不相同。