简体   繁体   中英

Remove element from tuple in a list

I've knocking my head against a wall with this:

Basically what I want is to remove " " items from this list of tuples:

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

and obtain the following new list:

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

any ideas?

Tuples in Python are immutable . This means that once you have created a tuple, you can't change the elements contained within it. However, you can create a new tuple that doesn't contain the items you don't want. For example:

>>> 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')]

This uses a list comprehension [... for x in a] to create a new list using the formula in ... . That uses a generator expression y for y in x if y to create a new tuple containing the elements of x only if y is true (meaning the value is truthy, or the string is nonblank).

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM