每当您想要对两个(或更多)列表的相应值执行某些操作时,这就是zip http://docs.python.org/3/library/functions.html#zip是为了.它为您提供了每个索引对应值的一个列表。
所以,在这种情况下,zip
将两个列表放在一起,然后过滤压缩列表,然后解压缩它们(使用zip
再次,正如文档所解释的那样):
xVar, yVar = zip(*((x, y) for x, y in zip(xVar, yVar) if y <= 100))
如果这令人困惑,让我一步一步展示:
>>> xVar = [1, 200, 300, 10]
>>> yVar = [150, 100, 50, 200]
>>> xyVar = zip(xVar, yVar)
>>> xyVar
[(1, 150), (200, 100), (300, 50), (10, 500)]
>>> xyFiltered = [(x, y) for x, y in xyVar if y <= 100]
>>> xyFiltered
[(200, 100), (300, 50)]
>>> xVar, yVar = zip(*xyFiltered)
[(200, 300), (100, 50)]