python - 将字符串列表转换为整数列表

标签 python list

我需要将一个包含 2 个项目的字符串(用逗号分隔)转换为整数。

来自:

[['(0,3)', '(1,2)', '(2,2)'], ['(0,3)', '(1,2)', '(2,2)']]

到:

[[(0,3), (1,2), (2,2)], [(0,3), (1,2), (2,2)]]

最佳答案

您可以使用 ast.literal_eval任务:

from ast import literal_eval

lst = [["(0,3)", "(1,2)", "(2,2)"], ["(0,3)", "(1,2)", "(2,2)"]]

lst = [[literal_eval(v) for v in l] for l in lst]
print(lst)

打印:

[[(0, 3), (1, 2), (2, 2)], [(0, 3), (1, 2), (2, 2)]]

编辑:另一种方法(感谢@S3DEV):

out = [list(map(literal_eval, sub_list)) for sub_list in lst]

快速基准测试:

from timeit import timeit
from ast import literal_eval

lst = [["(0,3)", "(1,2)", "(2,2)"], ["(0,3)", "(1,2)", "(2,2)"]]


def fn1():
    return [[literal_eval(v) for v in l] for l in lst]


def fn2():
    return [list(map(literal_eval, sub_list)) for sub_list in lst]


assert fn1() == fn2()

t1 = timeit(lambda: fn1(), number=1_000)
t2 = timeit(lambda: fn2(), number=1_000)

print(t1)
print(t2)

在我的机器上打印(AMD 3700X,Python 3.9.7):

0.040873110003303736                                                                                                                                                                                           
0.04002662200946361                                                                                                                                                                                            

关于python - 将字符串列表转换为整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72488071/

相关文章:

Python endpoints_proto_datastore 通过 KeyProperty 查询

html - 如何使用 css 隐藏列表并在鼠标位于上方时显示它?

python - 在python中有效地知道两个列表的交集是否为空

list - Prolog 语言中的大小过程

python - 选择与 Pandas 中多列中的值匹配的行

python - -1 立方根计算器返回错误

python - 如何使用类方法作为参数(变量)?

Python - 将数字与 boolean 值进行比较(始终返回 false)

python - 使用 Python 将此列表转换为字典

python - 根据作为列表的值获取字典的键