我有两个项目列表,我不知道它们的长度,但它不一定相同。我需要将它们的项目按相反顺序添加到另一个列表中。因此list1中的最后一项与list2中的最后一项配对。两个列表中的第一项只有在长度相同时才会配对。
我不知道如何在Python和其他语言中这样做很容易。这是我到目前为止所尝试的,但它不起作用:
blocks = []
list = list1
if len(list2) > len(list1):
list = list2
r_list1 = reversed(list1)
r_list2 = reversed(list2)
for i, not_used in enumerate(list):
blocks.append([
r_list1[i] if len(r_list1) > i else None,
r_list2[i] if len(r_list2) > i else None,
])
答案 0 :(得分:1)
>>> import itertools
>>> lst1 = [1,2,3,4]
>>> lst2 = [5,6,7]
>>> itertools.izip_longest(reversed(lst1), reversed(lst2))
<itertools.izip_longest object at 0x0000000002D13228>
>>> list(itertools.izip_longest(reversed(lst1), reversed(lst2)))
[(4, 7), (3, 6), (2, 5), (1, None)]
>>> map(list, itertools.izip_longest(reversed(lst1), reversed(lst2)))
[[4, 7], [3, 6], [2, 5], [1, None]]
如果您需要其他值而不是None
,请使用fillvalue
关键字参数:
>>> list(itertools.izip_longest(reversed(lst1), reversed(lst2), fillvalue=999))
[(4, 7), (3, 6), (2, 5), (1, 999)]
答案 1 :(得分:0)
这对你有用吗?
a = [1,2,3,4,5]
b = [55,44,33,22]
zip(a[::-1], b[::-1])
输出
[(5, 22), (4, 33), (3, 44), (2, 55)]