列表理解[j-x[i]==0 for i,j in enumerate(x[1:])]
将产生一个布尔元素列表。返回值必须是布尔型标量,而不是列表。它是通过对所有元素进行“或”运算获得的。怎么做?
def has_same_adjecent(x):
if len(x)<2:
return False
return [j-x[i]==0 for i,j in enumerate(x[1:])]
has_same_adjecent([3,1,3,3])# must return True
答案 0 :(得分:1)
您可以使用any
(这会造成短路)进行操作。作为一项额外的优化,您可以将自己的列表压缩为1,然后进行比较。
def has_same_adjecent(data):
return any(x == y for x, y in zip(data, data[1:]))
has_same_adjecent([3, 1, 3, 3])
# True
答案 1 :(得分:1)
您还可以使用numpy的any
:
np.any(~np.diff(a).astype(bool))
在代码中:
import numpy as np
a = [3,1,3,3]
print(np.any(~np.diff(a).astype(bool)))
# True