如何将列表转换为python中的列?

时间:2013-12-29 21:55:58

标签: python

我有一个内容5000个数字的列表。 它看起来像这个

y = [1,2,3,4,5,6]

我想用另一个矩阵复用这个矩阵。 因此,我想将其转换为列。

y' =[[1],[2],[3],[4],[5],[6]]

我尝试使用zip(*y)。但是发生错误"zip argument #1 must support iteration" 非常感谢你的帮助。

4 个答案:

答案 0 :(得分:3)

您可以使用列表推导:

>>> y = [1,2,3,4,5,6]
>>> [[i] for i in y]
[[1], [2], [3], [4], [5], [6]]

答案 1 :(得分:2)

考虑切换到numpy以进行有效的向量和矩阵运算。

In [1]: import numpy as np

In [2]: %paste
y = [1,2,3,4,5,6]

## -- End pasted text --

In [3]: a = np.array(y)

In [4]: a
Out[4]: array([1, 2, 3, 4, 5, 6])

In [5]: np.dot(a, a)
Out[5]: 91

使用矩阵:

In [7]: M = np.matrix(np.arange(0, 15, 0.5).reshape((6, 5)))

In [8]: M
Out[8]:
matrix([[  0. ,   0.5,   1. ,   1.5,   2. ],
        [  2.5,   3. ,   3.5,   4. ,   4.5],
        [  5. ,   5.5,   6. ,   6.5,   7. ],
        [  7.5,   8. ,   8.5,   9. ,   9.5],
        [ 10. ,  10.5,  11. ,  11.5,  12. ],
        [ 12.5,  13. ,  13.5,  14. ,  14.5]])

In [9]: a * M
Out[9]: matrix([[ 175. ,  185.5,  196. ,  206.5,  217. ]])

或简单地说:

In [10]: M = np.arange(0, 15, 0.5).reshape((6, 5))

In [11]: np.dot(a, M)
Out[11]: array([ 175. ,  185.5,  196. ,  206.5,  217. ])

答案 2 :(得分:0)

y' = [[i] for i in y]

会这样做

答案 3 :(得分:0)

我认为你正在尝试使用2D数组:

 >>> z = [[1,2,3,4,5,6]]
 >>> zip(*z)
 [(1,), (2,), (3,), (4,), (5,), (6,)]

虽然现在你有一个元组列表,而不是列表列表。

据我了解,zip存在以获取可迭代的集合(烦躁(?))并返回元组列表,其中第n个元组包含每个可迭代的第n个项目。

当您使用1D列表并对其应用“*”时,在将列表传递给zip之前解压缩列表。所以,

  y = [1,2,3,4,5,6]
  zip(*y)

相同
  y = [1,2,3,4,5,6]
  zip(1,2,3,4,5,6)

正如错误所述,它要求zip使用不支持迭代的参数。