用newlin列出理解和/或空格

2024-04-24 04:59:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这似乎是一个很简单的问题,但我不明白这是怎么可能的。通常我的代码符合PEP8。83字是很好的类型。我有一个很长的列表(字典)理解和一个or相结合,我试图把它放到一个新的行中,但是我不知道如何将or放到新行上。在

简化后的版本是:

>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test
...               if test[k]]) or 'hello'

无论何时(无论何时),我试图将or 'hello'放在一个新行上,它都会失败;命令行解释器和emacs的解析器也不理解,所以这可能是不可能的。在

是否可以将or 'hello'放在一个新行上?如果可以,它会去哪里?在


Tags: or代码命令行intest版本none类型
3条回答

如果一行太长,请将其拆分为多个语句以增强可读性:

b = ','.join(k for k in test if test[k])
if not b:
    b = 'hello'

(我还将列表理解更改为更合适的生成器表达式。)

用括号括起来。这会有用的。在

>>> test = {'a' : None, 'b' : None}
>>> b = (','.join([k for k in test if test[k]])
...      or 'hello')

您可以用反斜杠显式地标记行继续符:

>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test if test[k]]) \
...          or 'hello'

相关问题 更多 >