Я часто использую списочное понимание в Python, потому что я думаю, что это чистый способ генерировать списки, но часто я возвращаюсь через неделю и думаю про себя "Какого черта я это сделал? for?! " и это более 70 символов вложенного условного оператора. Мне интересно, дойдет ли до определенного момента, если мне следует разбить его на if / elif / else, и влияние на производительность, если таковое будет.
Мои текущие обстоятельства:
Возвращенная структура из вызова представляет собой список кортежей. Мне нужно привести его к списку, некоторые значения необходимо очистить, и мне нужно удалить последний элемент из списка.
, например
[(val1, ' ', 'ChangeMe', 'RemoveMe),
(val1, ' ', 'ChangeMe', 'RemoveMe),
(val1, ' ', 'ChangeMe', 'RemoveMe)]
Так что в этом случае я хочу удалить RemoveMe
, заменить все ' '
на ''
и заменить ChangeMe
на val2
. Я знаю, что это много изменений, но данные, которые мне возвращают, иногда ужасны, и я не могу контролировать то, что мне приходит в ответ.
У меня сейчас что-то вроде:
response = cursor.fetchall()
response = [['' if item == ' ' else item if item != 'ChangeMe' else 'val2' for item in row][:-1] for row in response]`
Не одобряется ли вложенное мультиусловное понимание? Я знаю, что стилистически Python предпочитает быть очень удобочитаемым, но также компактным и не столь многословным.
Любые советы или информация будет принята с благодарностью. Спасибо всем!