【发布时间】:2019-12-11 14:04:11
【问题描述】:
我遇到了一个问题,我有一个函数,它接受两个整数列表并返回一个整数列表(新列表),两个整数列表压缩在一起。
例如:
list1 = [1,2,3]
list2 = [4,5,6]
应该给[1, 4, 2, 5, 3, 6]而不是[1, 2, 3, 4, 5, 6]
另一种情况是如果一个列表比另一个长,例如:
list1 = [1,2]
list2 = [4,5,6,9]
一旦较短的列表用完项目,较长的列表应该添加其剩余元素。例如:[1, 4, 2, 5, 6, 9]
我尝试使用条件语句来检查哪个列表更长,并使用 for 循环追加到应该返回的新列表。我尝试使用在较短列表期间循环的 for 循环,一旦 for 循环结束,它会将较长列表中的剩余元素添加到新列表中。此外,如果两个列表都是空的,我必须返回一个空的新列表。
代码:
def main():
list1 = [1,2]
list2 = [4,5,6,9]
print(zip_lists(list1, list2))
def zip_lists(list1, list2):
new_list = []
if len(list1) > len(list2):
last_num = list1[len(list1):]
for num in range(0, len(list2)):
new_list.append(list1[num])
new_list.append(list2[num])
new_list.append(last_num)
return new_list
elif len(list2) > len(list1):
last_num = list2[len(list2):]
for num in range(0, len(list1)):
new_list.append(list1[num])
new_list.append(list2[num])
new_list.append(last_num)
return new_list
elif len(list1) and len(list2) == 0:
return new_list
main()
但是,我有一个问题,我无法从较长的列表中添加剩余元素,而是返回带有空方括号的部分压缩列表。
测试用例:
list1 = [1,2]
list2 = [4,5,6,9]
应该是 [1, 4, 2, 5, 6, 9] 但我得到的是 [1, 4, 2, 5, []]。
我的代码是否显示了对这个问题的正确思考方式?
【问题讨论】:
-
在
elif len(list2) > len(list1)的情况下last_num应该是list2[len(list1):]...和new_list+=last_num。在另一种情况下出现同样的错误。
标签: python list for-loop append