2017-03-18 3 views
1

Je veux que ma liste chaînée de L3 pour alterner les valeurs de L1 et L2 comme celui-ci 1,11,2,12,3,13,4,14Créer nouvelle liste lancer

J'ai essayé le code ci-dessous, mais je pense que la liste L3 est réinitialisée à chaque itération (ligne "p3 = Cellule (p1.entier)"), je n'arrive pas à trouver un moyen de créer L3 pour résoudre mon problème.

class Cellule(object): 
def __init__(self, entier): 
    self.entier=entier 
    self.suiv=None 
L1=Cellule(1) 
L1.suiv=Cellule(2) 
L1.suiv.suiv=Cellule(3) 
L1.suiv.suiv.suiv=Cellule(4) 

L2=Cellule(11) 
L2.suiv=Cellule(12) 
L2.suiv.suiv=Cellule(13) 
L2.suiv.suiv.suiv=Cellule(14) 

p1=L1 
p2=L2 
L3=Cellule(0) 
p3=L3 

while p1.suiv!=None: 
    p3=Cellule(p1.entier) 
    p3=p3.suiv 
    p3=Cellule(p2.entier) 
    p2=p2.suiv 
    p1=p1.suiv 

p4=L3 
while p4.suiv!=None: 
    print(p4.entier) 
    p4=p4.suiv 

J'espère que vous pouvez aider, grâce

+0

Quelle est votre question? – UnholySheep

+0

Je ne peux pas créer une liste chaînée où j'alterne la valeur de ma liste L1 1,2,3,4 et L2 11,12,13,14 pour avoir 1,11,2,12,3,13,4, 14 –

Répondre

1

Essayez ceci:

class Cellule(object): 
    def __init__(self, entier): 
     self.entier=entier 
     self.suiv=None 

L1=Cellule(1) 
L1.suiv=Cellule(2) 
L1.suiv.suiv=Cellule(3) 
L1.suiv.suiv.suiv=Cellule(4) 

L2=Cellule(11) 
L2.suiv=Cellule(12) 
L2.suiv.suiv=Cellule(13) 
L2.suiv.suiv.suiv=Cellule(14) 

p1=L1 
p2=L2 
L3=Cellule(0) 
p3=L3 

while 1: 
    p3.suiv = Cellule(p1.entier) 
    p3 = p3.suiv 
    p3.suiv = Cellule(p2.entier) 
    p3 = p3.suiv 
    p2 = p2.suiv 
    p1 = p1.suiv 
    if p1 == None and p2 == None: # I assume that your two objects are the same length 
     break 

p4 = L3.suiv 
while p4: 
    print(p4.entier) 
    p4 = p4.suiv 

Si vos deux objets sont de longueurs différentes, vous pouvez ajouter une déclaration de jugement à votre code.Like ceci:

while 1: 
    if p1: 
     p3.suiv = Cellule(p1.entier) 
     p3 = p3.suiv 
     p1 = p1.suiv 

    if p2: 
     p3.suiv = Cellule(p2.entier) 
     p3 = p3.suiv 
     p2 = p2.suiv 

    if p1 == None and p2 == None: 
     break 
+0

Cela fonctionne, mais ma nouvelle liste est 0,1,11,2,12,3,13,4,14 et non 1,11,2,12,3,13,4,14 –

+0

@ PeaceAndCube si vous ne ne veux pas le noeud 0, essayez ceci 'L3 = L3.suiv'. Je pensais que vous vouliez 'p4', donc j'ai fait' p4' pour être 1,11,2,12,3,13,4,14. – xiaoyi