我有一个大名单:Python的突破和调换大名单成更小的名单
X= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
,我要转成更小的列表: (X1-X5是重新映射在X数据占位符,用于X = 17,较小的列表的长度是所有事项)
x1 = [0, 1],
x2 = [0, 1, 2, 3]
x3 = [0, 1, 2, 3]
x4 = [0, 1, 2, 3]
x5 = [0, 1]
预期的结果:要在大列表中的数据映射到X 1 -X 5是这样的:
x1 = [0, 5]
x2 = [1, 6, 10, 13]
x3 = [2, 7, 11, 14]
x4 = [3, 8, 12, 15]
x5 = [4, 9]
我试图通过附加较小的列表进入大名单S和他们调换入T像这样向后工作我的方式:
s = [[0, 1], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1]]
t=map(None,*s)
[(0, 0, 0, 0, 0), (1, 1, 1, 1, 1), (None, 2, 2, 2, None), (None, 3, 3, 3, None)]
这是我卡住了。任何帮助在这里将不胜感激。我敢肯定有一个更简单的方法来做到这一点,而不追加,并将x重新映射到t,并将t分解为x1 -x5。
我不明白你的问题 - 这是什么'X2 = [0 ,1,2,3]'代表? – Eric
您是想为这个特殊结构创建一个函数,还是需要将函数以x1..x5作为输入并根据内容填充它们?它是否需要处理这些列表中超过五个的情况?它是否需要处理任意列号? –
如果'sum(len(part)for(x1,x2,x3,x4,x5))!= len(x)'中的部分会发生什么? – Eric