python如何在切片列表时跳过元素

时间:2018-02-24 03:50:50

标签: python list slice

我想从[[1,2,3,4],[11,12,13]得到[[1,2,4],[11,12,14],[21,22,24]] ,14],[21,22,23,24]]。 什么是优雅的方式?

我真正的问题是100000 * 17 2d列表。感谢。

5 个答案:

答案 0 :(得分:3)

一种方法是:

import numpy as np
np.array(lst)[:, (0, 1, 3)]

答案 1 :(得分:1)

一种直截了当的方式是:

rows = [[1, 2, 3, 4], [11, 12, 13, 14], [21, 22, 23, 24]]

print([[a, b, d] for a, b, c, d in rows])

print([[row[0], row[1], row[3]] for row in rows])

答案 2 :(得分:1)

一种简单的方法是弹出每个子列表的元素索引:

>>my_list =  [[1,2,3,4], [11, 12, 13, 14], [21, 22, 23, 24]]

>>for i in my_list:

>>    i.pop(2)

>> 3
>> 13
>> 23
>> print my_list
>> [[1, 2, 4], [11, 12, 14], [21, 22, 24]]

答案 3 :(得分:0)

您可以在Python3中使用解压缩:

s = [[1,2,3,4], [11, 12, 13, 14], [21, 22, 23, 24]]
new_s = [a+[b] for *a, _, b in s]

输出:

[[1, 2, 4], [11, 12, 14], [21, 22, 24]]

答案 4 :(得分:0)

试试

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr[:, (0,1,3,4)])

输出 [[ 1 2 4 5] [ 6 7 9 10]]