Удалить элемент из кортежа в списке

Я стукнулся головой о стену:

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

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

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

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

любые идеи?

Ответ 1

Кортежи в 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, только если y является истинным (это означает, что значение является правдивым или строка не имеет значения).

Ответ 2

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

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