Как я могу сделать следующее в Python?if/else в понимании списка Python?
row = [unicode(x.strip()) for x in row if x is not None else '']
По существу:
- заменить все ноны с пустыми строками, а затем
- выполняют функцию.
Как я могу сделать следующее в Python?if/else в понимании списка Python?
row = [unicode(x.strip()) for x in row if x is not None else '']
По существу:
Вы можете полностью сделать это, это просто вопрос упорядочения:
[ unicode(x.strip()) if x is not None else '' for x in row ]
Обратите внимание, что это на самом деле использует другой конструкции языка, conditional expression, которая сама по себе не является частью comprehension syntax, в то время как if
после того, как for…in
является частью списка со списком и используется для связи с фильтром элементов из исходников итерируемых.
Условные выражения могут использоваться во всех ситуациях, когда вы хотите выбрать между двумя значениями выражения на основе некоторого условия. Это делает то же самое, что и ternary operator ?:
that exists in other languages. Например:
value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')
Обратите внимание, что if/else здесь является синтаксисом «тройной оператор», а не синтаксисом описания списка. – 2010-11-23 20:04:11
Учитывая предыдущий вопрос OP, замечание Адама очень важно! – delnan 2010-11-23 20:06:04
Один из способов:
def change(f):
if f is None:
return unicode(f.strip())
else:
return ''
row = [change(x) for x in row]
Хотя тогда у вас есть:
row = map(change, row)
Или вы можете использовать лямбда-инлайн.
Вот еще один иллюстративный пример:
>>> print(", ".join(["ha" if i else "Ha" for i in range(3)]) + "!")
Ha, ha, ha!
Он использует тот факт, что if i
оценивает, чтобы False
для 0
и True
для всех других значений, полученных с помощью функции range()
. Поэтому список понимание вычисляется по следующей схеме:
>>> ["ha" if i else "Ha" for i in range(3)]
['Ha', 'ha', 'ha']
возможно дубликат [? Можно ли использовать «еще» в списке питон понимания] (http://stackoverflow.com/questions/2951701/is-it- возможное использование-else-in-a-python-list-comprehension) – 2014-07-25 18:36:25