Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解释范围(n)和布尔列表,一对一映射,更简单?_Python_Variable Assignment - Fatal编程技术网

Python 解释范围(n)和布尔列表,一对一映射,更简单?

Python 解释范围(n)和布尔列表,一对一映射,更简单?,python,variable-assignment,Python,Variable Assignment,您可以与列表理解一起使用,将其简化为: a=[True, False, True] b=[1,2,3] b_a # any such simple way to get it evaluated to [1,3] # above a crude way to do it in TRIAL 无论如何,在这里做一个口述并不是你想要的,因为口述是无序的。保持成对实际上简化了逻辑,因为您可以对成对进行迭代,给出两个元素

您可以与列表理解一起使用,将其简化为:

a=[True, False, True]
b=[1,2,3]
b_a                    # any such simple way to get it evaluated to [1,3]
                       # above a crude way to do it in TRIAL

无论如何,在这里做一个口述并不是你想要的,因为口述是无序的。保持成对实际上简化了逻辑,因为您可以对成对进行迭代,给出两个元素的名称,并在理解中使用这些名称

使用并行索引列表“压缩”列表的python方法是使用
enumerate

因此:


对于python2.7+,可以使用

乙二醇

否则,您可以使用列表

>>> from itertools import compress
>>> a=[True, False, True]
>>> b=[1,2,3]
>>> list(compress(b,a))
[1, 3]
如果要在素数列表中执行此操作,则使用enumerate可能更简单

>>> [j for i,j in zip(a,b) if i]
[1, 3]
print ([x for (x, y) in enumerate(primes(49)) if y])
itertools.compress(b,a)
>>> from itertools import compress
>>> a=[True, False, True]
>>> b=[1,2,3]
>>> list(compress(b,a))
[1, 3]
>>> [j for i,j in zip(a,b) if i]
[1, 3]
>>> primes = [False, False, True, True, False, True]
>>> list(compress(*zip(*enumerate(primes))))
[2, 3, 5]