2 votes

Ajouter une valeur à une liste par tour python

Donc j'essaie de append valeur de la liste à une autre tour à tour. Voici mon code :

lis1 = [1, 2, 3, 4, 5]
lis2 = [6, 7, 8, 9, 10]
for i, value in enumerate(lis2):
  lis1.append(i)
print(lis1)

Le résultat attendu est le suivant [1, 6, 2, 7, 3, 8, 4, 9, 5, 10]

Mais ce que j'ai obtenu est [1, 2, 3, 4, 5, 0, 1, 2, 3, 4]

Toute aide serait appréciée

2voto

Konrad Rudolph Points 231505

Vous voulez utiliser zip pour ça. Cela génère une liste de tuples, et pour l'aplatir vous pouvez utiliser itertools.chain :

import itertools

list(zip(lis1, lis2))
# [(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]

list(itertools.chain(*zip(lis1, lis2)))
# [1, 6, 2, 7, 3, 8, 4, 9, 5, 10]

# or:
list(itertools.chain.from_iterable(zip(lis1, lis2)))

1voto

Sebastien D Points 2250

Vous pourriez le faire comme ça :

out = []
for x in range(len(lis1)):
    out.append(lis1[x])
    out.append(lis2[x])

Sortie

[1, 6, 2, 7, 3, 8, 4, 9, 5, 10]

1voto

Harun Yilmaz Points 6857

Si vous ne voulez pas utiliser zip de itertools vous pouvez utiliser list.extend() comme suit :

lis1 = [1, 2, 3, 4, 5]
lis2 = [6, 7, 8, 9, 10]
new_list = []

for index, value in enumerate(lis1):
  new_list.extend((lis1[index],lis2[index]))

print(new_list)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X