python:如何根据1列表中的内容从2个列表中删除值

big*_*Cow 5 python

我有两个数字列表,一个叫xVar,另一个叫yVar.我将使用这两个元素在图形上绘制X和Y值.它们都具有相同数量的元素.

通常,我只是情节

ax.scatter(xVar,yVar,s=2,color='tomato');
Run Code Online (Sandbox Code Playgroud)

我想删除从数据yVar上超过一定的值,例如有一个所有数据yVar在价值100,但我也想删除相关的xVar值.有人可以提出一个方法来创建删除所有值2个的新变量yVar100xVar与它们相关的值?然后我可以在我的绘图线中用xVar&替换yVar新的变量.

再次感谢All,

aba*_*ert 13

每当你想对两个(或更多)列表的相应值做某事时,那zip就是为了什么.它为您提供了一个列表,列出了每个索引的相应值.

因此,在这种情况下,zip两个列表一起,然后过滤压缩列表,然后解压缩它们(zip再次,如文档所述):

xVar, yVar = zip(*((x, y) for x, y in zip(xVar, yVar) if y <= 100))
Run Code Online (Sandbox Code Playgroud)

如果这令人困惑,让我一步一步地说明:

>>> 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)]
Run Code Online (Sandbox Code Playgroud)