有没有比这行代码更聪明/更快/更轻巧的替代品?

2024-09-30 12:21:55 发布

您现在位置:Python中文网/ 问答频道 /正文

file = [float(line.partition(' ')[0]) for line in file]

文件是打开文件的对象。。。在

thnq公司


Tags: 文件对象inforline公司floatfile
3条回答

这取决于一旦创建了列表,您将如何处理它。如果您只是要遍历它,那么最好使用生成器表达式,这样就不会一次将整个文件加载到内存中。如果文件很大,这可能会导致页面交换或内存不足错误。在

我已经通读了你发布的相关问题,但看不到你试图解决什么问题,或者一旦你阅读了这些数据,你将如何处理这些问题。如果你给我们更多的背景,那么我们可能会给出更具体和有用的答案。在

有关速度的测量,请参见Python标准库模块timeit:

$ python -m timeit -s 'f = file("/tmp/numbers.txt")' '[float(line.partition(" ")[0]) for line in f]'
10000000 loops, best of 3: 0.123 usec per loop
$ python -m timeit -s 'f = file("/tmp/numbers.txt")' '[float(line.split(" ")[0]) for line in f]'
10000000 loops, best of 3: 0.132 usec per loop
$ python -m timeit -s 'f = file("/tmp/numbers.txt")' '[float(line.split(" ", 1)[0]) for line in f]'
10000000 loops, best of 3: 0.127 usec per loop

partition似乎至少比split快。我现在想不出更快的办法了,干得好。在

更聪明的做法是不阴影file。在

相关问题 更多 >

    热门问题