2016-12-23 8 views
-4

Вход:Как объединить два списка списка в Python

a=[[1,2,3],[4,5,6]] 
b=[[5,8,9],[2,7,10]] 
c=[] 

for i in range(len(a)): 
    for j in range(len(a)): 
     if a[i][1]==b[j][0]: 
      c[i].append(b[j][1]) 
      c[i].append(b[j][2]) 
print(c) 

IndexError: list index out of range

Выход должен быть таким:

c=[[1,2,3,7,10],[4,5,6,8,9]] 

Но когда я запускаю этот код питона получил эта ошибка, любой может мне помочь, любая помощь будет оценена

+1

Где делают номера 10 и 9 приходят от? – Nurjan

+0

Пожалуйста, объясните логику, почему у вашего нужного списка есть '7, 10' и' 8, 9' в под списках вместо '5, 8' и' 2, 7', которые являются частью списка 'b' –

+0

@ moinuddin- Извините, это была опечатка, я редактирую это уже – user2498850

ответ

0

Вы можете достичь этого, используя itertool.chain() с списка понимания выражения как:

>>> a=[[1,2,3],[4,5,6]] 
>>> b=[[5,8,9],[2,7,10]] 

#    v join the matched sub-lists 
#    v      v your condition 
>>> [i + list(chain(*[j[1:] for j in b if i[1]==j[0]])) for i in a] 
[[1, 2, 3, 7, 10], [4, 5, 6, 8, 9]] 
0

Попробуйте это:

a=[[1,2,3],[4,5,6]] 
b=[[5,8,9],[2,7,10]] 
c=[] 


c.append(sorted(list(set(a[0] + b[1])))) 
c.append(sorted(list(set(a[1] + b[0])))) 
print(c) 

Но обратите внимание, я уверен, что есть другие гораздо более изящные решения.

0
a=[[1,2,3],[4,5,6]] 
b=[[5,8],[2,7]] 
c=[] 

for i in range(len(a)): 
    x=a[i]+b[i] 
    c.append(x) 

print(c) 

Здесь вы идете

0
a=[[1,2,3],[4,5,6]] 
b=[[5,8,9],[2,7,10]] 
c=[] 
def list_concat_distinct(list1,list2): 
    tmp=list1[:] 
    tmp.extend([x for x in list2 if x not in list1 ]) 
    return tmp 
c.append(list_concat_distinct(a[0],b[1])) 
c.append(list_concat_distinct(a[1],b[0])) 
print(c) 

Надеется, что это может помочь ему.

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