python中的矩阵与设置列

时间:2016-10-04 18:11:16

标签: python list matrix

所以我试图用输出

制作一个2x3矩阵
    >>>l([1980, 1981, 1982])
    >>>[[1., 1980], [1., 1981], [1.,1982]]

然而,我得到的输出是:

    >>>l([1980, 1981, 1982])
    >>>[1.0, [1980, 1981, 1982]]

我的代码是:

def l(x):   
    for i in range(len(x)):
        xl  = [1., x]
    return xl

我知道我必须多次使用for循环重复它,但我并不完全确定如何做到这一点。

3 个答案:

答案 0 :(得分:4)

这是一个使用列表理解的好方法:

def l(x):  
    return [[1., e] for e in x]

答案 1 :(得分:1)

你想要的是

def l(x):  
    xl = [] 
    for i in range(len(x)):
        xl.append([1., x[i]])
    return xl

或者,因为除了索引i的元素之外,不需要使用索引x,您可以使用:

def l(x):  
    xl = [] 
    for e in x:
        xl.append([1., e])
    return xl

或者你可以简单地将所有这些压缩成列表连接,如Tim的回答:

def l(x):
    return [[1., e] for e in x]       

答案 2 :(得分:0)

您也可以使用map

>>> li=[1980, 1981, 1982]
>>> map(lambda e: [1.0]+[e], li)
[[1.0, 1980], [1.0, 1981], [1.0, 1982]]

或者,如果你不介意元组列表:

>>> zip((1.0,)*len(li),li)
[(1.0, 1980), (1.0, 1981), (1.0, 1982)]

或者,如果你想修复你的:

>>> li2=[]
>>> for e in li:
...    li2.append([1.0,e])
... 
>>> li2
[[1.0, 1980], [1.0, 1981], [1.0, 1982]]