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