Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中带有集合列的矩阵_Python_List_Matrix - Fatal编程技术网

python中带有集合列的矩阵

python中带有集合列的矩阵,python,list,matrix,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)):

所以我试着用输出做一个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循环多次重复它,但我不完全确定如何执行。

下面是一个很好的列表理解方法:

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

下面是一个很好的列表理解方法:

def l(x):  
    return [[1., e] for e in x]
你想要的是

def l(x):  
    xl = [] 
    for i in range(len(x)):
        xl.append([1., x[i]])
    return xl
或者,由于除了索引
x
的元素外,无需使用索引
i
,因此您可以使用:

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]       
你想要的是

def l(x):  
    xl = [] 
    for i in range(len(x)):
        xl.append([1., x[i]])
    return xl
或者,由于除了索引
x
的元素外,无需使用索引
i
,因此您可以使用:

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]       

您还可以使用
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]]

您还可以使用
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]]

如果每次迭代都给
xl
分配了完全相同的东西,为什么会有一个循环?如果每次迭代都给
xl
分配了完全相同的东西,为什么会有一个循环?虽然这很有用,因为它与OP的解决方案最为相似,但我认为值得强调的是
范围(len(x))
在Python中通常是一个反模式虽然这很有用,因为它与OP的解决方案最为相似,但我认为值得强调的是,
range(len(x))
在Python中通常是一个反模式