为什么这会让我超出范围(lst3.append(lst4 [j]))?

时间:2016-03-25 04:44:41

标签: python python-2.7 python-3.x

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])。

我真的很感激任何有助于改进代码和解决问题的建议。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

Python list是零索引的。由于len()确定的长度是一个索引,因此list不包含索引等于其长度的元素。因此,转到lst1的{​​{1}}切片将失败。如果您想一直走到len(lst1)的末尾,只需使用lst1省略切片的结尾。

但是,您可以使用lst1[len(lst2):]更轻松地完成任务,这将允许您交错项目,然后将剩余的切片(如有必要)添加到结果中:

zip()