Python如何用列表推导式单行实现字符串中两个字符的双向互换?
错误原因
你现有代码的问题出在链式调用replace的执行逻辑:
- 第一步
string.replace('X','Y')会把字符串中所有X替换为Y,此时字符串内已不存在任何X字符 - 第二步
replace('Y','X')会把所有Y(包含原本就存在的Y、以及第一步从X转换来的Y)全部替换为X,所以最终所有目标字符都会变成X
可行的单行列表推导式实现
直接遍历字符串每个字符做分支判断替换即可,不会出现替换覆盖的问题,完全符合列表推导式单行实现的要求:
def Function(string): return ''.join(['Y' if c == 'X' else 'X' if c == 'Y' else c for c in string])
效果验证
- 输入
'X'→ 输出'Y' - 输入
'Y'→ 输出'X' - 输入
'XY123YX'→ 输出'YX123XY'
内容的提问来源于stack exchange,提问作者Rich
相关产品推荐
相关产品推荐

