2010-04-27 7 views
4

J'ai une liste d'objets (pour ce que ça vaut la peine d'être en scons). Je voudrais créer deux listes L1 et L2L1 est L avec un élément I1 en annexe et L2 est L avec un élément I2 en annexe. Je voudrais utiliser append mais cela modifie la liste d'origine.python: manipulation de liste

Comment puis-je faire cela en Python? (Désolé pour la question débutant, je ne pas utiliser la langue beaucoup, juste pour scons)

Répondre

8
L1 = L + [i1] 
L2 = L + [i2] 

C'est probablement le moyen le plus simple. Une autre option consiste à copier la liste, puis append:

L1 = L[:]  #make a copy of L 
L1.append(i1) 
+0

bien, merci! .. –

3
L1=list(L) 

doublons la liste. Je suppose que vous pouvez comprendre le reste :)

2

Vous pouvez faire une copie de votre liste

>>> x = [1, 2, 3] 
>>> y = list(x) 
>>> y.append(4) 
>>> y 
[1, 2, 3, 4] 
>>> z = list(x) 
>>> z.append(5) 
>>> z 
[1, 2, 3, 5] 

ou l'utilisation concaténation, qui fera une nouvelle liste

>>> x = [1, 2, 3] 
>>> y = x + [4] 
>>> z = x + [5] 
>>> y 
[1, 2, 3, 4] 
>>> z 
[1, 2, 3, 5] 

Le premier est probablement un peu plus idiomatique/commun, mais le dernier fonctionne bien dans ce cas. Certaines personnes copient également en utilisant le découpage en tranches (x[:] fait une nouvelle liste avec tous les éléments de la liste originale x) ou le module copy. Aucun d'entre eux sont horribles, mais je trouve le premier un peu énigmatique et le dernier un peu bête.