Python 检查列表(或操作)的任何元素的条件是否为真

Python 检查列表(或操作)的任何元素的条件是否为真,python,list,Python,List,列表理解[j-x[i]==0表示枚举(x[1:])]]中的i,j将生成布尔元素列表。返回值必须是布尔标量,而不是列表。它是通过对所有元素进行排序或合并而获得的。如何做到这一点 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 T

列表理解
[j-x[i]==0表示枚举(x[1:])]]
中的i,j将生成布尔元素列表。返回值必须是布尔标量,而不是列表。它是通过对所有元素进行排序或合并而获得的。如何做到这一点

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
def具有相同的邻接(x):
如果len(x)你可以用(哪条短路)来做。作为一个额外的优化,您可以将列表压缩到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
您也可以使用numpy:

在代码中

import numpy as np

a = [3,1,3,3]
print(np.any(~np.diff(a).astype(bool)))

# True

Numpy是一个很棒的模块,但是对于这样一个简单的操作来说有点过分了。@cs95,非常同意。OP注意:这只适用于带有数值的列表。
import numpy as np

a = [3,1,3,3]
print(np.any(~np.diff(a).astype(bool)))

# True