输入:
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中运行此代码时出现此错误,任何人都可以帮助我,任何帮助将不胜感激
答案 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]]