Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 压缩不相等列表,填充较短列表的开头_Python_Python 3.x - Fatal编程技术网

Python 压缩不相等列表,填充较短列表的开头

Python 压缩不相等列表,填充较短列表的开头,python,python-3.x,Python,Python 3.x,关于如何压缩不平等列表,我发现了很多问题/答案。但是,在所有情况下,结果集都会在较短列表的背面填充“无”。我想预先列出较短的名单 list1 = [a, b, c, d, e] (pretend these are numbers) list2 = [3, 4, 5] fun(list1, list2) => [(a, None), (b, None), (c, 3), (d, 4), (e, 5)] 奖金: fun(list1, list2) => [(a, 0), (b,

关于如何压缩不平等列表,我发现了很多问题/答案。但是,在所有情况下,结果集都会在较短列表的背面填充“无”。我想预先列出较短的名单

list1 = [a, b, c, d, e]  (pretend these are numbers)
list2 = [3, 4, 5]

fun(list1, list2) => [(a, None), (b, None), (c, 3), (d, 4), (e, 5)]
奖金:

fun(list1, list2) => [(a, 0), (b, 0), (c, 3), (d, 4), (e, 5)]
我想是吧?(那么这是一个决定哪个更长/更短的问题)


好吧,那你试了什么?有什么问题吗?@jornsharpe我什么都没试,因为我不知道该试什么。我认为这是完全合法的;因此,这不是一个代码编写服务,您应该自己在这些事情上投入一些实际的努力。@jornsharpe;你不知道我投入了多少精力——我做了多少搜索——你太放肆了。用一行程序寻求帮助几乎不是一种代码编写服务。如果你看到我的其他帖子,你会发现我很彻底。为了满足在这种情况下不适用的要求而扔掉一些垃圾会有什么价值呢。撇开你的名誉不谈,我相信你这次做错了。你是对的,我没有,因为你没有表现出来。你说你发现了很多Q/A,但不是它们是什么或者你从中学到了什么。也许你已经尝试过修改一些你已经发现的东西来填充开始而不是结束,这是有意义的,但同样地,这不在Q中。你不是在寻求帮助,你是在寻求代码(可能是一行,也可能不是一行)。展示你的作品。谢谢你,杰。。。我的理解正确吗?您正在翻转两个列表的顺序,对不相等的列表进行正常压缩,然后再次翻转?是的,这是正确的,除非当最短列表用尽时,不相等列表的正常压缩会停止,虽然zip_longest会在最长的列表用尽时停止。很好的答案:)但是如果你这样做,你的同事和/或老师可能会很感激你把它放在一个有名的函数中。。。
def left_pad_list(a_list,n,fillval=None):
    return [fillval]*(n-len(a_list)) + list(a_list)
my_lists = [list1,list2,list3]
max_len = max(my_lists,key=len)
my_new_lists = [left_pad_list(x,max_len,0) for x in my_lists]
from itertools import zip_longest

list1 = ['a', 'b', 'c', 'd', 'e']
list2 = [3, 4, 5]

result = [tup for tup in zip_longest(list1[::-1], list2[::-1], fillvalue=0)][::-1]
print(result)
# [('a', 0), ('b', 0), ('c', 3), ('d', 4), ('e', 5)]