python - 拆分大量字符串并创建结果列表

标签 python performance

我有一个很大的字符串列表。每个字符串都有一些由“;”分隔的段:

'1,2,23,17,-1006,0.20;1,3,3,2258,-1308,0.72;'

我想用“;”分割每个字符串并保存结果列表。

我目前正在使用:

player_parts = []

for line in playerinf:
    parts = line.split(";")
    player_parts = player_parts + parts

有没有更快的方法来做到这一点?

最佳答案

如果我没理解错的话,你可以试试itertools.chain并解压缩列表理解:

from itertools import chain

lines = ['1,2,23,17,-1006,0.20;1,3,3,2258,-1308,0.72;', '2,3,34,56,-2134,0.50;2,4,7,2125,-3408,0.56;']
parts = list(chain(*[line.split(';')[:-1] for line in lines]))

parts
# ['1,2,23,17,-1006,0.20', 
#  '1,3,3,2258,-1308,0.72', 
#  '2,3,34,56,-2134,0.50', 
#  '2,4,7,2125,-3408,0.56']

我添加了一个 [:-1] 来删除 split(';') 的最后一个空元素。但是,如果您需要那个空元素,只需删除 [:-1]

由于 chain 在编译代码上运行,它应该比 python 解释器快得多。

10000 行的运行时间是:

using chain: 0.34399986267089844s
using your method: > 240.234s     # (I didn't want to wait any more)

关于python - 拆分大量字符串并创建结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53327422/

相关文章:

python - 确定最长的正面和反面

performance - 批量 HTTP 请求性能提升

c++ - SFINAE的表现和if else

ruby-on-rails - Ruby - 如何加速 ".each"数组的循环?

python - 测试准确率得分高于GridSearchCV中的最佳得分

python - 提高 NumPy 数组操作的性能

python - 接收分类指标无法处理多类混淆矩阵的混合

excel - 在获取 Excel 工作簿中所有工作表名称的列表期间,VBA 代码的执行速度非常慢

python - 将 NumPy 字符串数组映射为整数

jquery - 使用 Tornado 向ajax发送响应