我有一个很大的字符串列表。每个字符串都有一些由“;”分隔的段:
'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/