将for循环转换为列表推导式
大家好,
我有一些代码是用来从一个文件中读取特定的行,我想知道用列表推导式和生成器表达式/函数来写的话,哪个会运行得更快。如果确实更快的话,代码应该怎么写呢?我还在学习Python。谢谢大家的帮助!
input = open('C:/.../list.txt', 'r')
output = open('C:/.../output.txt', 'w')
x=0
for line in input:
x = x+1
if x > 2 and x < 5:
output.write(line)
列表文件包含
1
2
3
4
5
新文件中的输出是
3
4
6 个回答
1
并不是说更快,但如果你想用列表推导式的话:
output.writelines([line for (x, line) in enumerate(input) if 1 < x < 4])
这里假设你是根据文件的实际行数来定位,而不是根据文件中读取的值(根据你给x赋值的方式来看,这个假设是正确的)。
2
如果你想用生成器来实现这个功能:
output.writelines(line for line in input if 2 < int(line) < 5)
6
不需要使用列表推导式。
output.write(''.join(itertools.islice(inputfile, 2, 4))