从列表中的元组中删除元素

时间:2012-03-14 01:31:25

标签: python list tuples

我用这个把头撞到了墙上:

基本上我想要的是从这个元组列表中删除“”项目:

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

并获取以下新列表:

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

任何想法?

2 个答案:

答案 0 :(得分:23)

Python中的元组是不可变的。这意味着一旦创建了元组,就无法更改其中包含的元素。但是,您可以创建一个不包含您不需要的项目的 new 元组。例如:

>>> 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为真(意味着值是真的,或者是字符串)是非空白的。

答案 1 :(得分:0)

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

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