我不确定这是最快的,但绝对是最安全/最简单的:
import ast
lst = ast.literal_eval(s)
常规eval
也可以工作:
lst = eval(s)
我的机器的一些基本计时:
>>> s = '[54, 95, 45, -97, -51, 84, 0, 32, -55, 14, 50, 54, 68, -3, 57, 88, -1]'
>>> def f1():
... eval(s)
...
>>> def f2():
... ast.literal_eval(s)
...
>>> timeit.timeit('f1()', 'from __main__ import f1')
31.415852785110474
>>> timeit.timeit('f2()', 'from __main__ import f2')
46.25958704948425
因此,根据我的计算机,eval
速度比快50%ast.literal_eval
。但是,这eval
绝对是不安全的,除非您完全信任它,否则切勿在任何字符串上使用它。除非这是一个真正的演示瓶颈,并且您100%相信输入,否则我会认为值得花一些额外的时间来换取能够在晚上安然入睡的条件。