Python構文のヘルプが必要
疑似コード
paramsでparamがNoneでない場合、param replace('xx'、'x')
私はここまで到達します:
param.replace('|', '/') for param in ("bar|one","bar|two")
私の質問は、このコード行にNoneチェックを追加する方法です。
多分:
[ 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 ]
私は2番目のバージョンの方が少し好きです。なぜならNone else None
、最初のバージョンに存在していたナンセンスを壊すからです...
これは、@Tim Pietzcker による (最初の) 回答とは少し異なります。彼の(最初の)答えはNone
、入力イテラブルから値をフィルタリングしますが、この答えは値を通過させます。
ここでは、Python の条件式(他の言語では「三項演算子」と呼ばれることもあります) を使用します。構文は次のとおりです。
value_if_true if conditional_expression else value_if_false
[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]
場合によります...
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]