我有一个整数列表,列表的长度不固定,可能是2,3,4等。我想把列表的长度作为多维数组的维数,每个整数在列表是每个维度的元素数量。例如alist = [2,3,4],生成的索引是:
[0,0,0],[0,0,1],[0,0,2],[0,0,3],
[0,1,0],[0,1,1],[0,1,2],[0,1,3],
[0,2,0],[0,2,1],[0,2,2],[0,2,3],
[1,0,0],[1,0,1],[1,0,2],[1,0,3],
[1,1,0],[1,1,1],[1,1,2],[1,1,3],
[1,2,0],[1,2,1],[1,2,2],[1,2,3]
alist = [2,3],生成的索引为:
[0,0],[0,1],[0,2],
[1,0],[1,1],[1,2]
我无法弄清楚如何使用Python,我也不想使用numpy。
感谢所有回复,我得到了:
alist = [2,3,4]
li = []
for i in alist:
b = list(range(i))
li.append(b)
p = product(*li)
l = [x for x in p]
print(l)
答案 0 :(得分:1)
let data = [0, 1, 2, 3, 4, 5];
let index = 3;
data.unshift(data.splice(index, 1)[0]);
// data = [3, 0, 1, 2, 4, 5]
对于长度未知的alist,将参数存储在列表中,然后使用import itertools
p = itertools.product(range(2),range(3),range(4))
l = [x for x in p]
print(l)
展开它们。
*args
答案 1 :(得分:0)
对每个维https://docs.python.org/3.6/library/itertools.html#itertools.product
使用itertools.product
的{{1}}
答案 2 :(得分:0)
from itertools import product
alist = [2,3]
iterables, repeat = alist
data = list(product(range(iterables),range(repeat)))
>>>[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]