考虑以下示例,该示例基于我过去遇到的错误:
>>> l = [1, 2, 3]
>>> l.extend(map(lambda n: l.append(10 * n), [4, 5, 6]))
>>> l
[1, 2, 3, 40, None, 50, None, 60, None]
为什么将这些None
插入结果列表?通过执行map(lambda n: l.append(10 * n), [4, 5, 6])
,我希望得到l = [1, 2, 3, 40, 50, 60]
,然后最终由l = [1, 2, 3, 40, 50, 60, None, None None]
更新为list.extend()
,因为map()
操作返回了[None, None, None]
。
[有人可以澄清吗?
map(function, sequence)
返回可以迭代的对象。当您对其进行迭代时,对于每次迭代,都会在序列的下一个成员上调用该函数,直到序列完成为止。
[将这样的对象传递给extend
时,将对其进行迭代,并且在每个步骤中,返回的值都会附加到原始列表l
中。
所以迭代过程如下:
l
l
因此,无值和显式附加的值在列表中交错。