Python重新转换为相同数据类型的时间

2024-04-20 06:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python遍历大量未知数据类型(主要是整数)。所以为了标准化数据类型,我通常把变量转换成int。所以我的问题是,如果列表很大,把int转换成int需要额外的时间吗?更正式地考虑以下代码:

# data is a huge list which consists of int, float etc.
modifieddata=[]
for i in data:
 modifieddata.append(int(i)+12)

如果我已经是int,python到底做什么?将它转换回int是浪费时间还是忽略int()语句


Tags: of代码which列表datais时间整数
1条回答
网友
1楼 · 发布于 2024-04-20 06:24:27

我很确定Python不会浪费任何时间将int转换为int。Python将检查该类型,如果它已经是一个int类型,则只需保留它

当Python创建新对象时,它必须分配内存并跟踪引用。因此,通过创建一个新对象进行不必要的转换,会使内存分配器和垃圾收集器额外工作,从而导致不必要的减速

至少在CPython中,Python实际上重新使用了最常见的整数。如果你计算3 - 3,你会得到0,它实际上是与其他0相同的对象

x = 0
y = 3 - 3
assert x is y  # they are the same object!

注:我不会指望以上;它现在正好起作用,但依靠它可不是个好主意。但是,如果Python不辞辛劳地重用公共整数而不是分配新的整数,那么您就知道Python不会接受整数并毫无意义地重新分配它们

相关问题 更多 >