从其他列表python的索引获取列表

时间:2019-12-28 21:07:39

标签: python-3.x list

我有2个列表:

a=[0,2,0,5]
b=[3,4,5,6]

我想从列表a中删除所有0,并在列表b中删除对应的值(具有相同索引)。 我的结果应该是:

a=[2,5]
b=[4,6]

直到现在我做到了:

a = [idx for idx, val in enumerate(a) if val == 0] 

并获得a=[1,3] 但我无法在b中获得相应的列表

2 个答案:

答案 0 :(得分:1)

a=[0,2,0,5]
b=[3,4,5,6]

a, b = map(list, zip(*[[i, j] for i, j in zip(a, b) if i != 0]))

print(a)
print(b)

打印:

[2, 5]
[4, 6]

答案 1 :(得分:0)

您正确地获得了a列表索引,要从b列表中获取有效元素,最简单的方法是

[b[idx] for idx, val in enumerate(a) if val != 0] 

并获取a

[val for val in a if val != 0]

一次迭代即可完成

x = [(val, b[idx]) for idx, val in enumerate(a) if val != 0]

x = [(val_a, val_b) for val_a, val_b in zip(a, b) if val_a != 0]

但是它给出了元组列表,但是您可以使用一些python魔术将其变成两个列表

a, b = map(list, zip(*x))