我需要将两个列表合并到一个列表中并打印出来
例如:
list1 = [9, 3, 5, 7]
list2 = [5, 4 , 6]
list3 = [9, 5, 3, 4, 5, 6, 7]
我需要用“for”或“while”来做,因为我们还没有学到比这更先进的东西。
我现在的代码:
list1 = [3, 4, 5, 6]
list2 = [1, 2, 0, 9, 9]
tlist = []
n1 = len(list1)
n2 = len(list2)
n3 = n1 + n2
n4 = len(list2) - 1
n5 = len(list1) - 1
i = 1
c = 0
while i in range(0, n3):
tlist.insert(i, list1[c])
tlist.insert(i, list2[c])
c += 1
i += 2
tlist.extend(list2[n4:])
tlist.extend(list1[n5:])
for num in tlist:
print num
结果是:
3
1
4
2
5
0
6
9
9
6
(那就是最终应该如何) 所以如果len(list1)= len(list2)我就设法做到了 但是如果列表长度不同则无法正常工作
答案 0 :(得分:0)
无论列表长度如何,您的代码始终会附加每个列表的最后一个元素。相反,请尝试此扩展程序:
tlist.extend(list2[c+1:])
tlist.extend(list1[c+1:])
我得到了这个改变的预期输出:它从循环离开的地方(c)开始,而不是从最后一个元素(n4,n5)开始。
另外,你的while循环绑定是错误的;仅当两个列表长度相差不超过1时,它才有效。否则,您将获得超出范围错误的下标。试试这个:
for c in range(min(n1, n2)):
tlist.insert(i, list1[c])
tlist.insert(i, list2[c])
i += 2
# do not increment c; the for statement handles that part.
当任何一个列表用完时,这将退出复制。
顺便说一句,请更改为有意义的变量名称。 n1-n5系列没有告诉我们他们的目的。 ' C'和'我'也很弱。不要害怕输入更多。
更新的程序,包括加长的测试用例:
list1 = [3, 4, 5, 6]
list2 = [1, 2, 0, 9, 8, 7, -1]
tlist = []
n1 = len(list1)
n2 = len(list2)
n4 = len(list2) - 1
n5 = len(list1) - 1
i = 1
for c in range(min(n1, n2)):
tlist.insert(i, list1[c])
tlist.insert(i, list2[c])
i += 2
print tlist
tlist.extend(list2[c+1:])
tlist.extend(list1[c+1:])
print tlist
答案 1 :(得分:0)
只需使用" +"添加两个列表合并它们。
In [1]: a = [1,2,3]
In [2]: b = [2,3]
In [3]: a+b
Out[3]: [1, 2, 3, 2, 3]
或者您可以执行以下操作:
for i in b:
...: a.append(i)
...:
In [5]: a
Out[5]: [1, 2, 3, 2, 3]