Python中判断字符是否为十进制的for循环能否改写为单行代码?
Python循环逻辑单行改写方案
你给出的循环逻辑完全可以改写为单行实现,改写后的代码和原逻辑的执行规则、短路特性完全一致。
原逻辑说明
你贴出的代码核心规则是:检查字符串text的前3个字符,只要存在任意1个不是十进制数字,就返回False终止函数执行,否则继续运行后续代码。
单行实现方案
根据你的使用场景分为两种写法:
场景1:函数核心功能就是判断text前3位是否全为十进制数字
原代码循环结束后没有其他逻辑,校验通过后返回True,直接用如下写法即可:
return all(c.isdecimal() for c in text[:3])
场景2:仅替代贴出的三行代码,校验通过后还要执行函数后续逻辑
直接把判断和返回合并为一行:
if not all(c.isdecimal() for c in text[:3]): return False
注意事项
- Python内置的
all()函数自带短路判断特性:遍历过程中只要遇到第一个结果为False的项,就会立刻终止遍历返回False,和原循环的执行效率完全一致,没有额外性能损耗 - 如果你的业务逻辑要求
text长度必须≥3,上述两种写法和原代码效果完全一致;如果允许text长度不足3时自动检查所有已有的字符,切片写法不会触发索引越界错误,兼容性更好
内容的提问来源于stack exchange,提问作者user14793744
相关产品推荐
相关产品推荐

