-
斯蒂芬大帝
你完全可以做到,这只是一个订购问题:[unicode(x.strip()) if x is not None else '' for x in row]总体而言,[f(x) if condition else g(x) for x in sequence]以及,对于清单的理解if只是条件,[f(x) for x in sequence if condition]注意,这实际上使用了不同的语言构造,条件表达式,它本身并不是理解句法,而if在.之后for…in是列表理解的一部分,并且习惯于滤光器来自源可迭代的元素。条件表达式可以在各种情况下使用,在这些情况下,您需要根据某种条件在两个表达式值之间进行选择。这与三元算子?:存在于其他语言中..例如:value = 123print(value, 'is', 'even' if value % 2 == 0 else 'odd')
-
潇潇雨雨
单程: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']