42

重複の可能性:
Python でのリスト内包表記またはジェネレーター式の行継続

長いリスト内包表記を書くための最もpythonicな方法は何ですか? このリスト内包表記は 145 列になります。

memberdef_list = [elem for elem in from_cache(classname, 'memberdefs') if elem.argsstring != '[]' and 'std::string' in null2string(elem.vartype)]

複数の行に分割すると、どのように表示されますか? これについては、Python スタイル ガイドで何も見つかりませんでした。

4

1 に答える 1

56

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)]
于 2012-09-11T14:39:59.237 に答える