map(function, iterable, ...)
将函数应用于可迭代的每个项目并返回结果列表。如果传递了额外的可迭代参数,函数必须接受那么多参数并并行应用于所有可迭代的项目。
如果一个可迭代对象比另一个更短,则假定使用 None 项进行扩展。
如果 function 是None,则假定恒等函数;如果有多个参数,则map()返回一个由元组组成的列表,其中包含来自所有可迭代对象的相应项(一种转置操作)。
None
map()
可迭代参数可以是序列或任何可迭代对象;结果始终是一个列表。
这在制作笛卡尔积中起什么作用?
content = map(tuple, array)
将元组放在其中有什么影响?我还注意到,如果没有 map 函数,输出abc是a, b, c.
abc
a, b, c
我想完全理解这个功能。参考定义也很难理解。太多花哨的绒毛。
map不是特别pythonic。我建议改用列表推导:
map
map(f, iterable)
基本上相当于:
[f(x) for x in iterable]
map单靠它自己不能做笛卡尔积,因为它的输出列表的长度总是和它的输入列表一样。不过,您可以通过列表理解轻松地做笛卡尔积:
[(a, b) for a in iterable_a for b in iterable_b]
语法有点混乱——基本上相当于:
result = [] for a in iterable_a: for b in iterable_b: result.append((a, b))