0
votes

Fusionner deux listes (éléments paires / impairs)

for i,v in enumerate(B):
    A.insert(2*i+1,v) 

5 commentaires

Pouvez-vous montrer votre sortie attendue? Vous appelez tolist , mais votre intention de travailler avec des tableaux numpus ou des listes Python? Je ne comprends pas quels appels initiaux à np.zeros car ces variables sont écrasées par arange plus tard.


Même / étrange par index ou valeur? Donner un exemple de travail complet.


Est-ce que l'une de votre liste est-elle même et l'autre avec des éléments impairs? Ou sont-ils à la fois des listes avec des éléments caus et paires aléatoires?


Si je comprends bien correctement, voir RomotRobin dans docs.python.org/2/library/ iTERTOOLS.HTML # Recettes ou Stackoverflow.com / Questions / 2017895 / ... (mettez-le dans une compréhension de la liste pour obtenir une liste)


Bien sûr, si vous avez du code de travail, mais vous le souhaitez dans une nouvelle liste C au lieu d'un, alors faites simplement la même chose après C = A.Copy () pas le plus efficace, mais si vous voulez une nouvelle liste c d'a ... juste le faire.


4 Réponses :


0
votes

Utilisation d'une combinaison de intégré zip () code> et liste de compréhensions.

C = []
for sublist in zip(A, B):
    C.extend(sublist)


0 commentaires

0
votes

op: Comment créer une nouvelle liste C qui fusionne A et B basée sur leurs éléments paires / impairs?

supposant que vous avez deux listes avec des éléments étranges / paires mélangés, vous pourrait séparer les éléments impairs / paires et les stocker dans des listes séparées, itération ultérieure sur eux à l'aide de zip (): xxx

sortie: xxx


0 commentaires

1
votes

Je recommande d'utiliser NUMPY au lieu de la convertir en listes (c'est-à-dire avant a = a.toliste () code> et b = b.toliste () code>):

[1.0, 11.0, 1.5, 11.5, 2.0, 12.0, 2.5, 12.5, 3.0, 13.0, 3.5, 13.5, 4.0, 14.0, 4.5, 14.5]


2 commentaires

J'aime l'utilisation sur NP, mais l'autre solution échouera. Les listes sont de longueur différente.


@Johanschiff a accepté. Mais à en juger par la boucle pour la boucle fournie par OP en question, j'ai supposé que c'est le cas que a et B est de même longueur. Sinon, la fusion d'impair / même est douteuse et doit être clarifiée.



1
votes
In [203]: import itertools                                                                                      
In [204]: [(i,j) for i,j in zip(A,B)]                                                                           
Out[204]: 
[(1.0, 11.0),
 (1.5, 11.5),
 (2.0, 12.0),
 (2.5, 12.5),
 (3.0, 13.0),
 (3.5, 13.5),
 (4.0, 14.0),
 (4.5, 14.5)]
In [205]: list(itertools.chain(*[(i,j) for i,j in zip(A,B)]))                                                   
Out[205]: 
[1.0,
 11.0,
 1.5,
 11.5,
 2.0,
 12.0,
 2.5,
 12.5,
 3.0,
 13.0,
 3.5,
 13.5,
 4.0,
 14.0,
 4.5,
 14.5]

0 commentaires