def mergeList(lst1,lst2):
lst3=[]
lst4=[]
if len(lst1)>len(lst2):
for i in range(len(lst2)):
lst3.append(lst1[i])
lst3.append(lst2[i])
lst4=lst1[len(lst2):len(lst1)] #here is python giving an error
for j in lst4:
lst3.append(lst4[j])
else:
for i in range(len(lst1)):
lst3.append(lst1[i])
lst3.append(lst2[i])
lst4=lst2[len(lst1):len(lst2)]
for j in lst4:
lst3.append(lst4[j])
return lst3
此程序通过交错项目合并2个列表,但如果一个列表大于另一个列表,则较大列表的其余项目应逐项添加到合并列表(lst3),而不是列表。
我在这一行得到索引超出范围:lst3.append(lst4 [j])。
我真的很感激任何有助于改进代码和解决问题的建议。 提前谢谢。
答案 0 :(得分:2)
Python list
是零索引的。由于len()
确定的长度是一个索引,因此list
不包含索引等于其长度的元素。因此,转到lst1
的{{1}}切片将失败。如果您想一直走到len(lst1)
的末尾,只需使用lst1
省略切片的结尾。
但是,您可以使用lst1[len(lst2):]
更轻松地完成任务,这将允许您交错项目,然后将剩余的切片(如有必要)添加到结果中:
zip()