Questions tagged «generator-expression»

1
生成器作为函数参数
谁能解释为什么将生成器作为唯一的位置参数传递给函数似乎有特殊的规则? 如果我们有: >>> def f(*args): >>> print "Success!" >>> print args 可以正常工作。 >>> f(1, *[2]) Success! (1, 2) 不能正常工作。 >>> f(*[2], 1) File "<stdin>", line 1 SyntaxError: only named arguments may follow *expression 可以正常工作 >>> f(1 for x in [1], *[2]) Success! (generator object <genexpr> at 0x7effe06bdcd0>, 2) 这行得通,但我不明白为什么。它不应该以与2相同的方式失败吗? >>> …

1
列表理解和生成器表达式的收益
以下行为对我来说似乎很违反直觉(Python 3.4): >>> [(yield i) for i in range(3)] <generator object <listcomp> at 0x0245C148> >>> list([(yield i) for i in range(3)]) [0, 1, 2] >>> list((yield i) for i in range(3)) [0, None, 1, None, 2, None] 最后一行的中间值实际上并不总是None,它们是send生成器中使用的值,相当于(我想)以下生成器: def f(): for i in range(3): yield (yield i) 这三行代码完全起作用使我感到很有趣。该参考指出,yield仅在一个函数定义允许的(虽然我可能读错和/或它可能只是已经从旧版本复制)。前两行在SyntaxErrorPython 2.7中产生a ,但第三行却没有。 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.