【发布时间】:2015-02-11 04:34:06
【问题描述】:
我希望在 Python 列表或字典显示表达式中使用本地绑定,以便我可以在多个地方使用复杂表达式的结果(例如,if 子句和结果成员表达式)。像这样:
traders = {a:b
for g in groups
for a in account.group_accounts(g)
for b in [account.accounts[a].balance().get_amount()]
if my_condition(b)}
但要实现它,我必须制作一个单例列表,这既丑陋又不清楚。我真的想说
where b = account.accounts[a].balance().get_amount()
但是 Python 显示语法不允许这样的事情。为此目的最好的语法是什么?
【问题讨论】:
-
用普通的可读循环重写这个烂摊子怎么样?
-
account是一个类的实例吗? -
虽然您可能会找到一些使用具有副作用的函数来完成类似工作的 hacky 方法,但您真的不应该这样做。 Python 有一些函数式结构,但它不是函数式语言。如果你想让这样的代码可读,你必须以命令式的方式编写它,即普通的 for 循环。
-
我不懂这些cmets。这是字典显示表达式中的一个简单可读的循环(实际上,其中两个是嵌套的)。我想要的是推荐在
for b in ...行中表达b绑定的最佳方式。
标签: python syntax coding-style list-comprehension