如果我有列表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]