В Python, как мне удалить элемент списка Nth из списка списков (удаление столбцов)?

В Python, как мне удалить "столбец" из списка списков?
Дано:

L = [
     ["a","b","C","d"],
     [ 1,  2,  3,  4 ],
     ["w","x","y","z"]
    ]

Я хотел бы удалить "column" 2, чтобы получить:

L = [
     ["a","b","d"],
     [ 1,  2,  4 ],
     ["w","x","z"]
    ]

Есть ли способ slice или del, который будет делать это? Что-то вроде:

del L[:][2]

Ответ 1

Вы можете выполнить цикл.

for x in L:
    del x[2]

Если вы имеете дело с большим количеством данных, вы можете использовать библиотеку, которая поддерживает сложные срезы. Однако простой список списков не разрезается.

Ответ 2

просто перебирайте этот список и удаляйте индекс, который вы хотите удалить.

например

for sublist in list:
    del sublist[index]

Ответ 3

Немного скрученная версия -

index = 2  #Delete column 2 
[ (x[0:index] + x[index+1:])  for x in L]

Ответ 4

Вы можете сделать это со списком:

>>> removed = [ l.pop(2) for l in L ]
>>> print L
[['a', 'b', 'd'], [1, 2, 4], ['w', 'x', 'z']]
>>> print removed
['d', 4, 'z']

Он перебирает список и всплывает каждый элемент в позиции 2.

У вас есть список удаленных элементов и основной список без этих элементов.

Ответ 5

Это очень простой способ удалить любой столбец, который вы хотите.

L = [
["a","b","C","d"],
[ 1,  2,  3,  4 ],
["w","x","y","z"]
]
temp = [[x[0],x[1],x[3]] for x in L] #x[column that you do not want to remove]
print temp
O/P->[['a', 'b', 'd'], [1, 2, 4], ['w', 'x', 'z']]

Ответ 6

       L= [['a', 'b', 'C', 'd'], [1, 2, 3, 4], ['w', 'x', 'y', 'z']]

       _=[i.remove(i[2])for i in L]

Ответ 7

Если вы не возражаете при создании нового списка, вы можете попробовать следующее:

filter_col = lambda lVals, iCol: [[x for i,x in enumerate(row) if i!=iCol] for row in lVals]

filter_out(L, 2)

Ответ 8

[(x[0], x[1], x[3]) for x in L]

Он отлично работает.

Ответ 9

Альтернатива pop():

[x.__delitem__(n) for x in L]

Здесь n - индекс удаляемых элементов.