我对Python有点陌生,想将一个一维列表转换为二维列表,给定这个matrix
的width
和length
。
比如说我有一个list=[0,1,2,3]
,我想把它做成一个2*2
的矩阵。
我应该如何从这个list
中获取width
=2,length
=2的矩阵matrix [[0,1],[2,3]]
?
试试像这样:
In [53]: l = [0,1,2,3]
In [54]: def to_matrix(l, n):
...: return [l[i:i+n] for i in xrange(0, len(l), n)]
In [55]: to_matrix(l,2)
Out[55]: [[0, 1], [2, 3]]
xrange
被重命名为range
。 - undefinedxrange
已被重命名为range
。 - acmpo6ou我认为你应该使用numpy,它专门用于处理矩阵/数组,而不是使用列表的列表。这将如下所示:
>>> import numpy as np
>>> list_ = [0,1,2,3]
>>> a = np.array(list_).reshape(2,2)
>>> a
array([[0, 1],
[2, 3]])
>>> a.shape
(2, 2)
避免将变量命名为list
,因为这会掩盖内置名称。虽然不如您的代码那么优雅和具体,但您可以创建两个列表(包括每个其他整数),并将它们压缩/列成一个列表。
full_list = [0, 1, 2, 3]
list1 = []
list2 = []
for i in full_list:
if i % 2 == 0:
list1.append(i)
else:
list2.append(i)
zip_list = zip(list1, list2)
done = list(zip_list)
output:
[(0, 1), (2, 3)]