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

11

我已经为此苦苦思索很久:

基本上,我想从这个元组列表中删除“”项:


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

并获得以下新列表:

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

有什么想法吗?


请查看https://dev59.com/u2w15IYBdhLWcg3wZ68Y。 - PearsonArtPhoto
2个回答

26

在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 来创建一个新的元组,仅当y为真(即其值为真值或字符串非空)时,该元组才包含x 的元素。


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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接