Python如何将条件赋值逻辑简化为一行?分两种场景解答
Python代码简化:两种场景的一行实现
针对你给出的代码片段,我们可以根据不同需求将最后两行简化为一行,以下分场景说明:
场景1:保留第一个非None值
如果希望仅当c_f为None(或其他假值,比如0、""等)时,才用new_c_f替换它,也就是保留最早出现的非None/真值,直接使用or运算符即可:
c_f = None # c_f may change here c_f = c_f or new_c_f
这个逻辑和你原始的if not c_f: c_f = new_c_f完全一致:or会返回第一个为真的操作数,若c_f已经是有效值,就保留它;否则替换为new_c_f。
场景2:保留最后一个非None值
如果希望只要new_c_f是非None(或真值),就用它覆盖c_f,仅当new_c_f无效时才保留原c_f(即保留最后出现的非None/真值),可以按两种情况实现:
包含所有假值的情况(如0、""也视为无效)
c_f = None # c_f may change here c_f = new_c_f or c_f
这里or会优先取后出现的new_c_f,只有当它为假时才保留原c_f。
仅针对None判断(忽略其他假值)
如果只想在new_c_f不是None时才替换,不管它是0、""等假值,用三元表达式更精准:
c_f = None # c_f may change here c_f = new_c_f if new_c_f is not None else c_f
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

