0
votes

Utilisation de zip_longest pour résumer différentes listes de longueurs et remplir différentes longueurs du début plutôt que de finir

J'ai deux listes [1,2,3,4] et [1,2,3]

Je voudrais les résumer pour me donner ce qui suit: [1,3,5,7] .

Ceci a été fait en faisant 1 + 0 = 1 , 2 + 1 = 3 , 3 + 2 = 5 et et et 4 + 3 = 7 .

Je comprends que itheroTools.zip_longest ferait cela, mais il remplirait la longueur de la longueur avec 0 à la fin, me donnant [2,3 , 6,4] et non la valeur que je veux.

J'aimerais que l'inadéquation de la longueur soit résolue en remplissant la première longueur avec zéro.


0 commentaires

5 Réponses :


1
votes

Vous pouvez céder la deuxième liste avec zéros et utiliser zip code>: xxx pré>

sortie: p>

[1, 3, 5, 7]


1 commentaires

Cela suppose que s2 est toujours la liste plus courte, zip_longest déterminera qui est plus courte. Pas une mauvaise solution, mais aurait probablement besoin d'une étape précédente pour déterminer quelle liste à la palette à l'avant.



0
votes

Vous pouvez faire le tour de ce problème soit Inverser em> vos listes Befor zip code> avec zip_longest code>.

res = res[::-1]
print(res)  # [1, 3, 5, 7]


0 commentaires

1
votes

Vous pouvez utiliser la fonction inversée pour générer les deux listes de l'ordre inverse afin que zip_longest alignerait la zippation de l'autre extrémité, puis inversez le résultat après: xxx

cette sortie: xxx


2 commentaires

Ne différait pas beaucoup de mienne, n'est-ce pas?


J'ai vu le tien après avoir posté le mien. Ils sont en effet la même chose en identité, mais comme le mien est un peu plus généralisé en ce sens qu'il peut accueillir plusieurs listes, j'ai décidé de quitter le mien ici.



1
votes

Vous pouvez construire un shift en utilisant Répéter , puis concaténer le décalage avec le short avec le plus court en utilisant Chaîne : xxx

sortie xxx


0 commentaires