В 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
- индекс удаляемых элементов.