Python - 在不使用numpy

时间:2018-01-26 05:53:21

标签: python multidimensional-array

我有一个整数列表,列表的长度不固定,可能是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)

3 个答案:

答案 0 :(得分:1)

使用itertools.product

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)]