* map在python中是什么意思?

斯库利宾

我知道功能map它使用类似

new_list = map(func, list)

但是,这*map(func, list)什么意思呢?它像

hands = set(best_hand(h) for h in itertools.product( *map(replacements, hand)))
cdhowie

这意味着从中返回的可迭代对象map()将被解压缩为该函数的参数。也就是说,不是调用函数并将可迭代对象作为单个参数传递,而是将可迭代对象的各个元素作为单个参数传递。

此技术的说明:

>>> def foo(a, b, c): print "a:%s b:%s c:%s" % (a, b, c)
...
>>> x = [1,2,3]
>>> foo(*x)
a:1 b:2 c:3

但是,foo()不进行拆包就进行调用x意味着您要传递一个参数,其中应包含三个参数:

>>> foo(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() takes exactly 3 arguments (1 given)

Python 3参考§6.3.4中

如果语法*expression出现在函数调用中,则expression必须求值为可迭代。来自此迭代器的元素被视为它们是附加的位置参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章