我需要将由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相关问答推荐

将大小为n*512的数组绘制到另一个大小为n*256的数组的PC组件

OdooElectron 商务产品详情页面中add_qty参数动态更新

ValueRight:参数目标和输出必须具有相同的形状.接收:目标.形状=(无,512),输出.形状=(无,3)

云上Gunicorn的Flask-socketIO无法工作

Odoo onchange for invoice_Status of sale事件.订单未触发

Docker-compose:为不同项目创建相同的容器

NumPy中的右矩阵划分,还有比NP.linalg.inv()更好的方法吗?

Pydantic:如何将对象列表表示为dict(将列表序列化为dict)

在matplotlib动画gif中更改配色方案

根据不同列的值在收件箱中移动数据

重新匹配{ }中包含的文本,其中文本可能包含{{var}

使可滚动框架在tkinter环境中看起来自然

为什么抓取的HTML与浏览器判断的元素不同?

在ubuntu上安装dlib时出错

当递归函数的返回值未绑定到变量时,非局部变量不更新:

使用Python从URL下载Excel文件

Python Pandas获取层次路径直到顶层管理

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

为什么常规操作不以其就地对应操作为基础?

使用Openpyxl从Excel中的折线图更改图表样式