web-dev-qa-db-fra.com

Supprimer un élément de Tuple dans une liste

Je me suis cogné la tête contre un mur avec ceci:

En gros, ce que je veux, c'est supprimer les "" éléments de cette liste de tuples:

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

et obtenez la nouvelle liste suivante:

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

des idées?

11
Altons

Les tuples en Python sont immuables . Cela signifie qu'une fois que vous avez créé un tuple, vous ne pouvez pas modifier les éléments qu'il contient. Cependant, vous pouvez créer un nouveau Tuple qui ne contient pas les éléments que vous ne souhaitez pas. Par exemple:

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

Ceci utilise une compréhension de liste [... for x in a] pour créer une nouvelle liste en utilisant la formule dans .... Cela utilise une expression génératrice y for y in x if y pour créer un nouveau tuple contenant les éléments de x only si y est true (ce qui signifie que la valeur est vérité, ou que la chaîne est non vierge).

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

print [Tuple(x for x in y if x) for y in a]
0
PasteBT