为什么`list.extend()`在结果列表中交织`无`?

问题描述 投票:-1回答:1

考虑以下示例,该示例基于我过去遇到的错误:

>>> 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]

[有人可以澄清吗?

python python-3.x
1个回答
1
投票

map(function, sequence)返回可以迭代的对象。当您对其进行迭代时,对于每次迭代,都会在序列的下一个成员上调用该函数,直到序列完成为止。

[将这样的对象传递给extend时,将对其进行迭代,并且在每个步骤中,返回的值都会附加到原始列表l中。

所以迭代过程如下:

  • 从地图中获取下一个值
  • 映射在序列中的下一个值上调用函数
    • 这会将一个值附加到您的列表l
  • 从您的函数返回值None,并将其添加到列表l

因此,无值和显式附加的值在列表中交错。

© www.soinside.com 2019 - 2024. All rights reserved.