>>> row = [1,2,3,4,"--"]
>>> row = [cell.replace("--","hello") for cell in row if cell == "--"]
>>> row
['hello']
如何通过列表理解获得[1,2,3,4,"hello"]
?
答案 0 :(得分:4)
您改为使用conditional expression:
["hello" if cell == "--" else cell for cell in row]
这是左侧元素生成表达式的一部分,而不是列表推导语法本身,其中if
语句充当过滤器。
条件表达式使用 true_expression形式,如果test_expression,则为false_expression ;它总是产生一个价值。
我简化了表达;如果您用"--"
替换 "hello"
,您也可以返回"hello"
。
答案 1 :(得分:2)
[cell.replace("--","hello") if cell=="--" else cell for cell in row]
在if
末尾使用for
时,它会限制考虑哪些项目,因此该版本只会返回一个项目,因为源列表中只有一个项目符合条件。
同样在这种情况下,您不需要使用replace
,而只需使用"hello" if cell=="--"
,但如果您想要操作多个项目,则可以使用此表单。