列表中的元素根据三种条件的真实价值



如果我有列表l

L = [0,1,2,3,4,5,6,7,8,9]

我有一个真实价值的列表t

T = [1,0,1,0,1,0,1,0,1,0]

i可以访问与t。

中值相对应的L中的元素

例如

L[T == 1] = [0,2,4,6,8]
L[T == 0] = [1,3,5,7,9]

我的问题是:我有两个真相列表T1和T2,说:

T1 = [0,0,1,0,0,1,0,0,1,0]
T2 = [1,0,1,0,1,0,1,0,1,0]

我想要

将访问的L中的元素
L[T1 == T2 == 1] = [2,8]

或换一种方式

L[T1 == 1 and T2 == 1] = [2,8]

此三重条件似乎不适用于访问列表中的元素。我如何达到相同的结果?

这是 numpy shines:

import numpy as np
L = np.array([0,1,2,3,4,5,6,7,8,9])
T1 = [0,0,1,0,0,1,0,0,1,0]
T2 = [1,0,1,0,1,0,1,0,1,0]
mask = np.logical_and(T1, T2)
print(L[mask].tolist())
# [2, 8]

正如其他人在评论中指出的那样,从python的角度来看,您所做的事情没有任何意义。但是,将一个列表用作另一个列表上的掩码非常普遍,而且很容易做到。

您可以简单地做

masked = [x for x, t1, t2 in zip(L, T1, T2) if t1 and t2]

最新更新