Je ne sais pas comment regarder autour de cela, mais de itertools
la fonction izip_longest fait ceci:izip_longest avec boucle au lieu de fillvalue
izip_longest('ABCD', 'xy', fillvalue='-')
->Ax By C- D-
J'espérais une bibliothèque itérables aurait quelque chose à faire:
izip_longest_better('ABCDE', 'xy')
->Ax By Cx Dy Ex
de préférence pour un nombre arbitraire de iterables, étant utilisé pour générer des millions de combinaisons. J'écrirai le mien, mais j'ai pensé que je le demanderais, puisque je suis sûr que le mien ne sera pas très pythonique.
Impressionnant, C'était le cycle que je n'avais pas essayé. J'ai également réussi à faire fonctionner quelque chose en imbriquant des boucles sur des tableaux au lieu des itérateurs, mais c'est beaucoup mieux. Ce que je finalement utilisé était pour gérer aussi semblable à Izip »
EDIT: Nous avons fini avec
def izip_longest_repeat(*args): if args: lists = sorted(args, key=len, reverse=True) result = list(itertools.izip(*([lists[0]] + [itertools.cycle(l) for l in lists[1:]]))) else: result = [()] return result
Génial, C'était le cycle que je n'avais pas essayé. J'ai également réussi à faire fonctionner quelque chose en imbriquant des boucles sur des tableaux au lieu des itérateurs, mais c'est beaucoup mieux. Ce que j'ai finalement utilisé était ceci pour manipuler semblable à izip. 'lists = trié (args, key = len, reverse = Vrai)' 'result = liste (itertools.izip (* ([listes [0]] + [itertools.cycle (l) pour l dans les listes [ 1:]]))) ' – adzuci
très important lors de la génération de dictionnaire à partir d'une liste qui ont des en-têtes dans les premiers éléments! – SIslam