我有3个列表,半径,x和y。每个长度相同。如果半径中的'i'项目等于0,我想从每个列表中删除'i'项。下面是我尝试使用的代码,但由于某种原因不起作用。提前谢谢!
for i in range(len(radius)):
if radius[i]==0:
radius.remove(i)
x.remove(i)
y.remove(i)
答案 0 :(得分:1)
打破这一点将使您更好地理解python变量解包,列表推导以及zip
的工作原理。
x,y, radius = zip(*[(i,j,r) for i,j,r in zip(x,y,radius) if r != 0])
答案 1 :(得分:1)
您可以使用list.index
获取0
中radius
元素的索引,然后将其从radius
,x
和{{1}中删除}}:
y
现在您已拥有radius = [1, 2, 3, 4, 5, 0, 2]
x = [2, 3, 4, 5, 6, 7, 8]
y = [8, 7, 6, 5, 4, 3, 2]
index = radius.index(0)
,请删除:
index
如果存在很多零,那么如果del radius[index], x[index], y[index]
无法找到另一个try-catch
,您可以将其合并到一个index
的循环中。
答案 2 :(得分:0)
这对列表理解来说是个好例子:
In [1]: x, y, r = [1,2,3,4], [1,2,3,4], [1,0,1,0]
In [2]: x, y, r = zip(*[xyr_i for xyr_i in zip(x,y,r) if xyr_i[2] != 0])
In [3]: print(x)
(1, 3)
In [4]: print(y)
(1, 3)
In [5]: print(r)
(1, 1)