Python 根据三向条件的真值列出列表中的元素

Python 根据三向条件的真值列出列表中的元素,python,list,conditional-statements,Python,List,Conditional Statements,如果我有一份清单 L = [0,1,2,3,4,5,6,7,8,9] 我有一个真理值列表 T = [1,0,1,0,1,0,1,0,1,0] 我可以访问L中与T中的值相对应的元素 比如说 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 ==

如果我有一份清单

L = [0,1,2,3,4,5,6,7,8,9]
我有一个真理值列表

T = [1,0,1,0,1,0,1,0,1,0]
我可以访问L中与T中的值相对应的元素

比如说

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]
这个三重条件似乎不适用于访问列表中的元素。我怎样才能达到同样的效果呢?

这就是我要做的:


正如其他人在评论中指出的,从Python的角度来看,您所做的没有任何意义。然而,使用一个列表作为另一个列表的掩码是相当常见的,而且很容易做到

你可以简单地做

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

在python中,
L[T==1]
L[False]
,因为
T
不同于
1
。因此,当您编写
L[T==1]=[0,2,4,6,8]
时,实际上将列表
[0,2,4,6,8]
分配给
L[False]
。实际分配的是
L[0]
。请参阅,
L
包含
[[0,2,4,6,8],1,2,3,4,5,6,7,8,9]
。我认为这不是你想要的。这不是标准的python。您在python上使用的是什么库?你可以使用列表理解:
[x代表l,t1,t2(l,t1,t2),如果t1和t2]
@zezollo我认为他不是指作为一项作业,他说的是
l[t==1]
的结果等于
[0,2,4,6,8]
。这是熊猫符号吗?这是在绘图环境中。我正在处理的数据是2d,它是matplotlib导入pylab作为plb的散点图
plb.plot(L[T==1,0],L[T==1,1])
谢谢!我意识到这个问题的措辞有多么糟糕。我试图在回复上述评论时澄清。我正在使用pylab和numpy。
masked = [x for x, t1, t2 in zip(L, T1, T2) if t1 and t2]