Удалить элемент из кортежа в списке - PullRequest
11 голосов
/ 14 марта 2012

Я стучу головой о стену с этим:

В основном я хочу удалить "" элементы из этого списка кортежей:

[('650', '724', '6354', '', '', ''), ('', '', '', '650', '723', '4539')]

и получите следующий новый список:

[('650', '724', '6354'), ('650', '723', '4539')]

есть идеи?

Ответы [ 2 ]

23 голосов
/ 14 марта 2012

Кортежи в Python неизменны .Это означает, что после создания кортежа вы не можете изменять элементы, содержащиеся в нем.Однако вы можете создать новый кортеж, который не содержит ненужных вам элементов.Например:

>>> a = [('650', '724', '6354', '', '', ''), ('', '', '', '650', '723', '4539')]
>>> [tuple(y for y in x if y) for x in a]
[('650', '724', '6354'), ('650', '723', '4539')]

При этом используется понимание списка [... for x in a] для создания нового списка с использованием формулы в ....При этом используется выражение-генератор y for y in x if y для создания нового кортежа, содержащего элементы x only , если y истинно (что означает, что значение true или строка непустая).

0 голосов
/ 14 марта 2012
a = [('650', '724', '6354', '', '', ''), ('', '', '', '650', '723', '4539')]

print [tuple(x for x in y if x) for y in a]
...