所以我试图用输出
制作一个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循环重复它,但我并不完全确定如何做到这一点。
答案 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]]