2010-10-23 3 views
3

У меня есть список, как:Как удалить последний элемент в каждом кортеже в списке

alist = [[a,b,(1,2)], [a,b,(1,2)], [a,b,(1,2)]] 

Я хочу, чтобы удалить последний элемент из всех элементов в списке. Таким образом, результат будет следующим:

alist = [[a,b], [a,b], [a,b]] 

Есть ли быстрый способ сделать это?

+1

Что учебник вы используете, чтобы узнать Python? –

+0

что это за бессмысленное дополнение? что вы имеете в виду, это не работает? почему вы отправляете код из ответа? – SilentGhost

+0

«Ваш скрипт работает в оболочке python, но не работает в моей программе, не знаю, почему это»? Что это значит? –

ответ

9

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

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]] 
>>> [x[:-1] for x in alist]  # <------------- 
[[1, 2], [5, 6], [9, 10]] 

Однако, если вы хотите, эффективность можно изменить список на месте:

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]] 
>>> for x in alist: del x[-1]  # <------------- 
... 
>>> alist 
[[1, 2], [5, 6], [9, 10]] 
+0

Ударьте меня на 15 секунд. Я не должен был тратить время на то, чтобы понять, почему человек не использует хороший учебник Python. –

+0

Я почувствовал желание удалить какой-то беспорядок. Ваш первый ответ был примерно идеален. Подробный пример может быть более полезным, но, я думаю, он более ясен с двумя меньшими линиями отвлечения от этой важной, кристально чистой линии кода. –

+0

«если вы хотите эффективность»? Как это более эффективно? У вас есть некоторые номера для поддержки этого требования? –

0

Это основной материал Python. Вы должны быть в состоянии сделать это после прочтения учебника Python

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]] 
>>> for li in alist: 
...  print li[0:2] 
... 
[1, 2] 
[5, 6] 
[9, 10] 
>>> 

Позже, вы можете перейти к промежуточным таким вещам, как список понимание и т.д.

Смежные вопросы