2017-09-07 4 views
1

Liste des Liste qui sera inconnue dans la longueur des listes, ceci est un exempleÉtendre/ajouter une liste imbriquée de taille arbitraire avec une autre liste

a = [['GigabitEthernet0/0,', '0'], ['GigabitEthernet1/0/1,', '0']] 

Liste des chaînes inconnues dans la liste, c'est un exemple

b =['4564325', '777'] 

Est-il possible afin d'étendre numériquement une avec la chaîne correspondante de b?

résultat désiré ci-dessous

[['GigabitEthernet0/0,', '0', '4564325'], ['GigabitEthernet1/0/1,', '0', '777']] 

Répondre

0

Vous pouvez les zip et ajouter un à l'autre dans une boucle.

for x, y in zip(a, b): 
    x.append(y) 

print(a) 
[['GigabitEthernet0/0,', '0', '4564325'], 
['GigabitEthernet1/0/1,', '0', '777']] 

L'utilisation d'un list comprehension:

a = [x + [y] for x, y in zip(a, b)] 
print(a) 
[['GigabitEthernet0/0,', '0', '4564325'], 
['GigabitEthernet1/0/1,', '0', '777']] 

map alternative intéressante:

a = map(list.__add__, a, [[i] for i in b]) # python2.7 
print(a) 
[['GigabitEthernet0/0,', '0', '4564325'], 
['GigabitEthernet1/0/1,', '0', '777']] 
+0

cela a fonctionné parfaitement incroyable. Pourriez-vous répondre à une question concernant la compréhension de la liste? a = [x + [y] pour x, y dans zip (a, b)], pourquoi le [y]? –

+0

@BarryKeegan 'y' est une chaîne. Je ne peux pas ajouter une chaîne à une liste ('x' est une liste ici parce que' a' est une liste de listes). La même logique s'ensuit dans la solution 'map' où je convertis' b' en une liste de listes ... –

+0

@COLDSPEED Merci encore, tout à fait logique. Très appréciée. –