Python:两个行为怪异的列表的串联

Python:两个行为怪异的列表的串联,python,Python,我对Python非常陌生,我编写了以下代码,返回Pascal三角形的第k行,其中k作为“rowIndex”参数提供。问题出现在map函数中,其中串联[0]+行工作正常,但行+[0]不工作,并引发错误,如下所示。这个问题没有出现在使用zip而不是map实现的代码中(在下面的代码中注释掉了map),有人能指出问题是什么吗 提前谢谢 错误: 行=[映射(λa,b:a+b,[0]+行,行+[0])] TypeError:不支持+:“int”和“list”的操作数类型 代码: map返回一个列表,您不应该

我对Python非常陌生,我编写了以下代码,返回Pascal三角形的第k行,其中k作为“rowIndex”参数提供。问题出现在map函数中,其中串联
[0]+行
工作正常,但
行+[0]
不工作,并引发错误,如下所示。这个问题没有出现在使用zip而不是map实现的代码中(在下面的代码中注释掉了map),有人能指出问题是什么吗

提前谢谢

错误:

行=[映射(λa,b:a+b,[0]+行,行+[0])]

TypeError:不支持+:“int”和“list”的操作数类型

代码:


map
返回一个列表,您不应该用
[…]
包装它

>>> map(lambda a, b: a + b, [0,1,2], [1,2,0])  # Python 2.x
[1, 3, 2]
[…]
包装它,您将得到一个列表的列表;这将在第一次迭代后导致
TypeError

>>> [map(lambda a, b: a + b, [0,1,2], [1,2,0])]
[[1, 3, 2]]

如果您使用的是Python3.x,
map
返回一个迭代器;您需要使用
list
函数将其转换为list,以获得list对象:

>>> map(lambda a, b: a + b, [0,1,2], [1,2,0])  # Python 3.x
<map object at 0x7f5acef0a0b8>
>>> list(map(lambda a, b: a + b, [0,1,2], [1,2,0]))
[1, 3, 2]

谢谢你详细的回答。这很有帮助。
row = map(lambda a, b: a + b, [0]+row, row+[0])
>>> map(lambda a, b: a + b, [0,1,2], [1,2,0])  # Python 3.x
<map object at 0x7f5acef0a0b8>
>>> list(map(lambda a, b: a + b, [0,1,2], [1,2,0]))
[1, 3, 2]
row = list(map(lambda a, b: a + b, [0]+row, row+[0]))