python中带有集合列的矩阵
所以我试着用输出做一个2x3矩阵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)):
>>>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中通常是一个反模式