给定列表list1和list2具有相同的长度,创建一个新列表,其中包含list1的最后一个元素,后跟list2的最后一个元素,后跟list1的倒数第二个元素,接着是第二个元素list2的最后一个元素,依此类推(换句话说,新列表应该包含list1和list2反向的交替元素)。例如,如果list1包含[1,2,3]并且list2包含[4,5,6],则新列表应包含[3,6,2,5,1,4]。将新列表与变量list3相关联。
我的代码:
def new(list1,list2):
i = 0
j = 0
new_list = []
for j in list1:
new_list[i-1] = list2[j-1]
i+= 1
j += 1
new_list[i-1] = list2 [j-1]
i+= 1
j += 1
return new_list
我知道,它很乱= _ =,帮忙?
答案 0 :(得分:6)
l1 = [1,2,3]
l2 = [4,5,6]
newl = []
for item1, item2 in zip(reversed(l1), reversed(l2)):
newl.append(item1)
newl.append(item2)
print newl
答案 1 :(得分:2)
list(sum(zip(list1,list2)[::-1],()))
答案 2 :(得分:1)
另一种方式,
from itertools import izip
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
l = []
for _ in izip(reversed(l1), reversed(l2)): l.extend(_)
答案 3 :(得分:0)
我建议您使用列表.append()
方法来简化您的工作吗?
>>> mylist = []
>>> mylist.append(1)
>>> mylist
[1]
>>> mylist.append(7)
>>> mylist
[1, 7]
另一个小建议,而不是迭代一个列表或另一个列表,我建议迭代数字索引:
for i in range(len(list1)):
答案 4 :(得分:0)
一衬垫:
reduce(lambda x,y: list(x+y), reversed(zip(list1,list2)))
list
是必要的,因为先前的操作返回一个元组。