2015-08-29 3 views
0

У меня много проблем, чтобы объединить два простых вложенных списка, сохранив общую структуру. Например:Python: слияние списков вроде этого

# From this source: 

x = [['a','b','c'],['d','e','f'],['g','h','i']] 
y = [['A','B','C'],['D','E','F'],['G','H','I']] 


# To this result: 

z = [[['a','A'],['b','B'],['c','C']], 
    [['d','D'],['e','E'],['f','F']], 
    [['g','G'],['h','H'],['i','I']]] 

Любая идея?


Вот некоторые (неловко) код, который я попробовал:

X = [] 
Y = [] 

for i in iter(x[:]): 
    X.append('=') 
    for v in iter(i[:]): 
     X.append(v) 
print X; print 

for i in iter(y[:]): 
    Y.append('=') 
    for v in iter(i[:]): 
     Y.append(v) 
print Y; print 


for i in zip(X, Y): 
    print i 
+0

@AnttiHaapala Нет необходимости, чтобы попробовать что-нибудь. Кто-то скоро опубликует рабочее решение. – juanchopanza

+0

@juanchopanza так кажется. –

+0

@AnttiHaapala Это определенно стало сайтом «напишите мой код для меня». – juanchopanza

ответ

3
print([list(map(list,zip(*t))) for t in zip(x,y)]) 
[[['a', 'A'], ['b', 'B'], ['c', 'C']], 
[['d', 'D'], ['e', 'E'], ['f', 'F']], 
[['g', 'G'], ['h', 'H'], ['i', 'I']]] 

Шаги:

In [20]: zip(x,y) # zip the lists together 
Out[20]: 
[(['a', 'b', 'c'], ['A', 'B', 'C']), 
(['d', 'e', 'f'], ['D', 'E', 'F']), 
(['g', 'h', 'i'], ['G', 'H', 'I'])] 

In [21]: t = (['a', 'b', 'c'], ['A', 'B', 'C']) # first "t" 
In [22]: zip(*t) # transpose, row to columns, columns to rows 
Out[22]: [('a', 'A'), ('b', 'B'), ('c', 'C')] 

In [23]: list(map(list,zip(*t))) # convert inner tuples to lists 
Out[23]: [['a', 'A'], ['b', 'B'], ['c', 'C']] 
+1

Да! Так мило. –

Смежные вопросы