可能重复:
Line continuation for list comprehensions or generator expressions in python
编写长列表理解的最pythonic方法是什么?这个列表理解出现在145列:
memberdef_list = [elem for elem in from_cache(classname, 'memberdefs') if elem.argsstring != '[]' and 'std::string' in null2string(elem.vartype)]
如果我把它分成多行怎么看?我在Python风格指南中找不到任何相关内容。
答案 0 :(得分:41)
PEP 8有点早于列表理解。我通常会在逻辑位置将这些行分解为多行:
memberdef_list = [elem for elem in from_cache(classname, 'memberdefs')
if elem.argsstring != '[]' and
'std::string' in null2string(elem.vartype)]
但大多数情况下,我首先放弃了相关的测试:
def stdstring_args(elem):
if elem.argstring == '[]':
return False
return 'std::string' in null2string(elem.vartype)
memberdef_list = [elem for elem in from_cache(classname, 'memberdefs')
if stdstring_args(elem)]