我知道功能map
。它使用类似
new_list = map(func, list)
但是,这*map(func, list)
是什么意思呢?它像
hands = set(best_hand(h) for h in itertools.product( *map(replacements, hand)))
这意味着从中返回的可迭代对象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)
如果语法
*expression
出现在函数调用中,则expression
必须求值为可迭代。来自此迭代器的元素被视为它们是附加的位置参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句