我有一个如下列表:
A = [[-1 - 2*1j, -1 + 2*1j], [-5, -4], [7 - 9*1j, 7 + 9*1j], [9]]
我想检查所有元素是否都具有负实部。在这种情况下,最后两个元素具有正实部。
如何识别违反条件的元素的数量?在这种情况下,我想知道A[2]
并A [3]
违反条件。
我有一个如下列表:
A = [[-1 - 2*1j, -1 + 2*1j], [-5, -4], [7 - 9*1j, 7 + 9*1j], [9]]
我想检查所有元素是否都具有负实部。在这种情况下,最后两个元素具有正实部。
如何识别违反条件的元素的数量?在这种情况下,我想知道A[2]
并A [3]
违反条件。
假设您有一个函数p来检查对象上的条件是真还是假(也称为谓词),要查找列表L中违反条件的元素,您可以使用:
list(filter(not(p),L))
让我们把它应用到一个例子中:
zs = [1 + 2j,5-3j,2,4j]
zs 是复数列表,顺便说一下,在 python 中,复数写为a + bj
print(list(filter(lambda z: z.real >= 0,zs)))
这将打印 zs 中具有正实部的元素。
PS:我们使用 lambda 来定义匿名函数,为了让代码更紧凑,你可以用传统的方式定义一个函数,并把它的名字传给过滤器。
In [1]: A = [[-1 - 2*1j, -1 + 2*1j], [-5, -4], [7 - 9*1j, 7 + 9*1j], [9]]
In [2]: violates = [i for i, a in enumerate(A) if any([aa.real > 0 for aa in a])]
In [3]: violates
Out[3]: [2, 3]