python – 同时从多个列表中删除元素

我有三个具有相同长度的列表和另一个列表,用于存储我需要从所有三个列表中删除的元素的索引.这是我的意思的一个例子:

a = [3,4,5,12,6,8,78,5,6]
b = [6,4,1,2,8,784,43,6,2]
c = [8,4,32,6,1,7,2,9,23]

(都有len()= 9)

另一个列表包含我需要从所有三个列表中删除的元素的索引:

d = [8,5,3]

(请注意,它已经排序)

我知道我可以从三个列表中删除一个元素:

for indx in d:
    del a[indx]
    del b[indx]
    del c[indx]

我怎么能在一行中做到这一点?

最佳答案 如果你的三个列表是2D numpy.array删除指定的列,那么numpy对于这样的东西很有用.

a = [3,4,5,12,6,8,78,5,6]
b = [6,4,1,2,8,784,43,6,2]
c = [8,4,32,6,1,7,2,9,23]

big_array = np.array([a,b,c])

d = [8,5,3]

结果:

>>> big_array
array([[  3,   4,   5,  12,   6,   8,  78,   5,   6],
       [  6,   4,   1,   2,   8, 784,  43,   6,   2],
       [  8,   4,  32,   6,   1,   7,   2,   9,  23]])
>>> np.delete(big_array, d, axis=1)
array([[ 3,  4,  5,  6, 78,  5],
       [ 6,  4,  1,  8, 43,  6],
       [ 8,  4, 32,  1,  2,  9]])
点赞