条件的 Python 子列表

Vin*_*ent 3 python list

我有 3 个列表x, yz我用以下方法绘制它们:

ax.plot3D(x, y, z, linestyle = 'None', marker = 'o').
Run Code Online (Sandbox Code Playgroud)

只绘制点 where 的最简单方法是什么x > 0.5

(我的问题是如何在条件下定义子列表而不在该列表上进行 for 循环)。

Ste*_*ger 5

我不确定为什么要避免循环遍历列表,我假设您希望其他列表中的相关点也删除。

>>> x = [0.0, 0.4, 0.6, 1.0]
>>> y = [0.0, 2.2, 1.5, 1.6]
>>> z = [0.0, 9.1, 1.0, 0.9]
>>> zip(x,y,z)
[(0.0, 0.0, 0.0), (0.4, 2.2, 9.1), (0.6, 1.5, 1.0), (1.0, 1.6, 0.9)]
>>> [item for item in zip(x,y,z) if item[0] > 0.5]
[(0.6, 1.5, 1.0), (1.0, 1.6, 0.9)]
Run Code Online (Sandbox Code Playgroud)

将列表分成其组成列表将需要以某种方式循环遍历列表。

  • 可以通过对 zip 的另一个调用将列表分离回单个列表:`f = [item for item in zip(x,y,z) if item[0] > 0.5]; zip(*f)` (3认同)