Duplicata possible:
Suite de ligne pour les listes de compréhension ou les expressions de générateur en python
Quelle est la façon la plus Pythonique d'écrire une compréhension de longue liste? Cette compréhension de la liste se compose de 145 colonnes:
memberdef_list = [elem for elem in from_cache(classname, 'memberdefs') if elem.argsstring != '[]' and 'std::string' in null2string(elem.vartype)]
À quoi devrait-il ressembler si je le divise en plusieurs lignes? Je n'ai rien trouvé à ce sujet dans les guides de style Python.
PEP 8 est un peu antérieur aux compréhensions de liste. Je les décompose généralement sur plusieurs lignes à des emplacements logiques:
memberdef_list = [elem for elem in from_cache(classname, 'memberdefs')
if elem.argsstring != '[]' and
'std::string' in null2string(elem.vartype)]
Mais surtout, je renoncerais au test en question en premier lieu:
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)]