如何在python中合并两个列表列表

时间:2016-12-23 06:18:43

标签: python list python-3.x

输入

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:列表索引超出范围

输出应该是这样的:

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

但是当我在python中运行此代码时出现此错误,任何人都可以帮助我,任何帮助将不胜感激

4 个答案:

答案 0 :(得分: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)

但请注意,我确信还有其他更优雅的解决方案。

答案 1 :(得分: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)

你去吧

答案 2 :(得分: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)

希望这可以帮助它。

答案 3 :(得分: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]]