如何用列表推导式输出TXT文件中无空格行的行号?
解决思路与代码修改建议
原代码存在的问题
- 重复打开文件:多次调用
open('test.txt')会重复读取文件,既浪费资源也可能导致意外问题。 readlines(line)用法错误:readlines()的参数是字节数而非行号,你想获取指定行的逻辑不成立。- 行号计数逻辑:原代码用
range(len(...))得到的是从0开始的索引,但通常我们需要的是从1开始的实际行号。
修正后的一行代码
利用enumerate可以直接遍历行并获取索引,这是最简洁高效的方式:
[idx + 1 for idx, line in enumerate(open('test.txt')) if ' ' not in line.strip()]
代码说明
enumerate(open('test.txt')):遍历文件对象,每次返回行索引(idx)和行内容(line),无需一次性把所有行读入内存,更高效。idx + 1:将默认从0开始的索引转换为从1开始的实际行号,符合日常行号计数习惯。line.strip():去除行首行尾的空白字符,避免因行首尾空格导致误判;如果需要严格检查整行(包括首尾空格),可以去掉.strip()。
原代码的可取之处
你使用列表推导式来实现需求的思路是正确的,只需要修正文件读取和行号获取的细节即可。
内容的提问来源于stack exchange,提问作者alxnom334
相关产品推荐
相关产品推荐

