多线列表理解的Pythonic风格

时间:2012-09-11 14:36:26

标签: python coding-style list-comprehension

  

可能重复:
  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风格指南中找不到任何相关内容。

1 个答案:

答案 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)]