我有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中获得相应的列表
答案 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))