参数中的param的python语法

时间:2013-01-04 21:19:05

标签: python syntax

需要一些Python语法帮助

Pesudo代码

  

如果param在params中不是None,则param替换('xx','x')

我到目前为止:

param.replace('|', '/') for param in ("bar|one","bar|two")

我的问题是如何在这行代码中添加无检查?

3 个答案:

答案 0 :(得分:8)

也许:

[ param.replace("|", "/") if param is not None else None for param in iterable ]

如果我们稍微改变一下逻辑,或者可能更清晰一点:

[ None if param is None else param.replace("|", "/") for param in iterable ]

我更喜欢第二个版本,因为如果打破了第一个版本中存在的None else None废话......

这与@Tim Pietzcker的(初始)答案略有不同。他的(初始)答案将从输入迭代中过滤None值,而这个答案将通过它们。


这里我们使用python conditional expression(有时在其他语言中称为“三元运算符”)。语法是:

value_if_true if conditional_expression else value_if_false

答案 1 :(得分:7)

[param.replace('|', '/') for param in params if param is not None]

这将从输入列表中静默删除所有None参数,所以

("bar|one", None, "bar|two")

会变成

["bar/one","bar/two"]

如果您不想这样,请使用

[param.replace('|', '/') if param is not None else None for param in params]

答案 2 :(得分:0)

这取决于......

您想要保留None元素吗?如果是这样的话:

[(each.replace('|', '/') if each is not None else None) for each in listOfWords]

如果你想过滤掉Nones,那么你可以这样做:

[each.replace('|', '/') for each in listOfWords if each is not None]