Код: Выделить всё
words = r'''
one
TWO
thr33
fo ur
'''
print([word.lower().strip() for word in words.splitlines() if word.lower().strip().isalpha()])
Правильно выдает ['one', 'two'], но меня беспокоит повторение .lower().strip(); Есть ли способ сначала перевести строку в нижний регистр и удалить строку, а затем использовать ее как в условии фильтра, так и в качестве значения в новом списке, не создавая при этом слишком много дополнительного кода или снижения производительности?
Я могу придумать
Код: Выделить всё
words = [word for word in map(lambda w: w.lower().strip(), words.splitlines()) if word.isalnum()]
Но меня это не очень устраивает (потому что долго и нудно)
Подробнее здесь:
https://stackoverflow.com/questions/790 ... ion-filter