需要一些Python语法的帮助
Pesudo代码
如果param在params中不是None,则param替换('xx','x')
我得到了这个:
param.replace('|', '/') for param in ("bar|one","bar|two")
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在这行代码中添加无检查?
也许:
[ param.replace("|", "/") if param is not None else None for param in iterable ]
Run Code Online (Sandbox Code Playgroud)
或者,如果我们稍微改变一下逻辑,可能会更清晰一些:
[ None if param is None else param.replace("|", "/") for param in iterable ]
Run Code Online (Sandbox Code Playgroud)
我喜欢第二个版本好一点,因为如果打破了None else None第一个版本中存在的废话......
这与@Tim Pietzcker的(初始)答案略有不同.他的(初始)答案将过滤None输入迭代中的值,而这个答案将通过它们.
这里我们使用python 条件表达式(有时在其他语言中称为"三元运算符").语法是:
value_if_true if conditional_expression else value_if_false
Run Code Online (Sandbox Code Playgroud)
[param.replace('|', '/') for param in params if param is not None]
Run Code Online (Sandbox Code Playgroud)
这将默默地None从输入列表中删除所有参数,所以
("bar|one", None, "bar|two")
Run Code Online (Sandbox Code Playgroud)
会成为
["bar/one","bar/two"]
Run Code Online (Sandbox Code Playgroud)
如果你不想那样,请使用
[param.replace('|', '/') if param is not None else None for param in params]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |