【发布时间】:2019-07-21 17:52:15
【问题描述】:
如何从 python 列表或从 numpy 数组更容易地创建下面描述的模式。
假设我有这样一个列表:
[
[a,a,0,a],
[0,b,0,b],
[c,0,c,c]
]
返回的列表应按遍历顺序循环嵌套列表(子列表 1 的元素 1,子列表 2 的元素 1,依此类推),但始终创建八元组列表大小。
[
[a,0,c,0,0,0,0,0],
[a,b,0,0,0,0,0,0],
[0,0,c,0,0,0,0,0],
[a,b,c,0,0,0,0,0]
]
在下一个示例中,我在子列表中有另一个子列表:
[
[a,a, 0, a],
[0,[b,b],0, b],
[c,c ,c,[c,c]]
]
生成的模式应该又是一次遍历。这里的规则是在子列表中处理这些列表中的元素之一相同,但是对于这些子列表中的元素二,只考虑具有这些深度的元素并将它们用在自己的八元组模式中。
[
[a,0,c, 0,0,0,0,0],
[a,b,c, 0,0,0,0,0],
[0,b,0, 0,0,0,0,0],
[0,0,c, 0,0,0,0,0],
[a,b,c, 0,0,0,0,0],
[0,0,c, 0,0,0,0,0],
]
另一个例子:
[
[a ,a ] ,
[b ,[b,b,b]],
[[c,c],0 ]
]
[
[a,b,c,0,0,0,0,0],
[0,0,c,0,0,0,0,0],
[a,b,0,0,0,0,0,0],
[0,b,0,0,0,0,0,0],
[0,b,0,0,0,0,0,0]
]
如果子列表的长度不同:
[
[a,0],
[b,[b,b],b]
]
[
[a,b,0,0,0,0,0,0],
[0,b,0,0,0,0,0,0],
[0,b,0,0,0,0,0,0],
[0,b,0,0,0,0,0,0]
]
有人可以告诉我一种如何处理遍历并使用嵌套列表处理这些异常并始终返回八元组的方法吗? 是否有其他容器或结构可以使这些模式更容易接收?
提前致谢
【问题讨论】:
-
嵌套列表中有嵌套列表的次数是否有限制? [ [a, [ [ a, [ 0, 1 ] ], 5 ] ], [a, b]] 是可能的输入吗?
-
当你的意思是一个子列表中可以有多少个子列表时,它是可变的。深度有一个最大值。所以在外部列表容器 [ ] 中保存所有子列表 [[sublist1], [sublist2],...],其中子列表可以包含简单值:..[a,a,a] 或例如[[c,c],[c,c,c]] 或混合。所以每个子列表要么没有深度,要么没有一级或混合 [b, [b,b,b,b,b,b], [b,b]]
标签: python python-3.x list