10
votes

Fusion de 2 listes de plusieurs manières - Python

J'ai expérimenté un certain nombre de techniques, mais je suis sûr qu'il y a une manière lisse-ish de faire ce fait.

Supposons que j'ai deux listes avec la même quantité d'articles d'eux (4 chacun):

ab12                                                                      
a1b2                                                                             
a12b                                                                         
1ab2                                                                             
1a2b                                                                          
12ab


0 commentaires

5 Réponses :


6
votes

Dans l'affaire 2x4, vous souhaitez prendre tous les 8 éléments sans perturber la commande dans chaque quad. Ces exemples:

a = ['a', 'b', 'c', 'd']
b = [1, 2, 3, 4]

for res in combos(a, b):
    print res


4 commentaires

Belle perspicacité, envisagez-vous de préparer une mise en œuvre?


J'en ai ajouté un, j'aime bien cette approche que la récursive parce que c'est trivial de le généraliser.


@SIHA: Merci, je voudrais juste être modifié dans ma réponse une note à ce sujet et comment la réparer.


Merci! Cela a fonctionné bien. La logique est élégante. Vous, John .. sont l'homme!



0
votes

L'option alternative consiste à utiliser la récursive.

pseudocode: xxx


0 commentaires

1
votes

Une approche récursive avec python: xxx


0 commentaires

1
votes

Une option consiste à utiliser un compteur où les bits définis correspondent à l'élément sur A code> et non défini sur l'élément sur B code>. Pour chaque valeur en comptoir Vérifier s'il y a len (A) code> BITS définit et génère une permutation:

['a', 'b', 1, 2]
['a', 1, 'b', 2]
['a', 1, 2, 'b']
[1, 'a', 'b', 2]
[1, 'a', 2, 'b']
[1, 2, 'a', 'b']


0 commentaires

0
votes

J'ai trouvé une solution qui fonctionne uniquement pour deux séquences, mais utilise itTools.combinations () pour trouver uniquement les séquences possibles des positions dans lesquelles placer (dans l'ordre ...) les éléments de la première séquence xxx

Je comprends vaguement qu'il est possible de gérer un plus grand nombre de listes fusionnant la 3ème liste avec chacune des listes générées à partir des premier et secondes, etc., etc. idée qui pointe dans la direction d'une mise en œuvre récursive, mais je suis heureux de laisser une telle accomplissement à quelqu'un d'autre ...

Edit 1

J'ai supprimé la machine compteur, Comme iTERTOOLS.Cycle () Les objets sont exactement ce qui est nécessaire.

sortie de test xxx


0 commentaires