Как правильно добавить `if` в выражение генератора в Python? - PullRequest
3 голосов
/ 20 декабря 2010

это мой код:

s = ''.join('%s: %s </br>' % (a,getattr(user, a) ) for a in dir(user))

, и я хочу добавить if в этот код, поэтому я пишу:

s = ''.join('%s: %s </br>' % (a,getattr(user, a) if !a.index('__') ) for a in dir(user))

я думаю, что это неправильно,

как правильно добавить if в цикл for,

спасибо

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Вы хотите, чтобы условие оценивалось на каждой итерации в конце цикла, например:

s = ''.join('%s: %s </br>' % 
               (a,getattr(user, a)) for a in dir(user) if '__' not in a
           )

Редактировать: Извините, исправил скобки для соответствующей вложенности.

Отредактировано: изменено условное выражение (раньше даже не обращал на это внимания, спасибо Фалмарри.

0 голосов
/ 20 декабря 2010

Синтаксис for iterated in interator if condition(iterated), поэтому вам нужно переместить if после dir(user):

s = ''.join('%s: %s </br>'
        % (a,getattr(user, a) for a in dir(user) if !a.index('__') ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...