Extension de Zip jusqu'à Pad jusqu'à la longueur maximale
Zip est une fonction intégrée à Python qui combine plusieurs itérables. Cependant, il s'arrête à la longueur de l'itérable le plus court. Que se passe-t-il si nous voulons compléter les résultats pour qu'ils correspondent à la longueur de l'itérable le plus long ?
Solution
Dans Python 3, itertools.zip_longest fournit cette fonctionnalité. Il évalue tous les itérables et pads avec Aucun par défaut, en conservant l'alignement.
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(itertools.zip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Vous pouvez personnaliser la valeur de remplissage à l'aide du paramètre fillvalue :
list(itertools.zip_longest(a, b, c, fillvalue='foo')) # [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Pour Python 2, vous pouvez utilisez itertools.izip_longest (Python 2.6) ou mappez avec Aucun :
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] map(None, a, b, c) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!