【发布时间】:2013-05-21 07:21:35
【问题描述】:
这一定很简单,但作为一个偶尔使用的 python 用户,会遇到一些语法问题。 这有效:
def perms (xs):
for x in itertools.permutations(xs): yield list(x)
但这不会解析:
def perms (xs): for x in itertools.permutations(xs): yield list(x)
单行函数语法有什么限制吗? 正文定义 (for...) 本身可以是两行或一行,而 def: 可以是带有简单正文的一或两行,但将两者结合起来会失败。 有没有排除这个的语法规则?
【问题讨论】:
-
Python 3.3 上的 FTR
def perms (xs): yield from map(list, itertools.permutations(xs)) -
作为偶尔使用 Python 的用户,您应该尝试并了解在 Python 中,布局很重要。可读性远比能够编写单行代码重要得多。如果有疑问,如果您必须维护它,请让它看起来像您希望看到的那样。
-
我知道布局很重要,因为第一个版本使用它并且有效。可读性是主观的,这种简单的东西的单行样式是我想要的,而且我想更好地理解语法问题。
标签: python