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]