在不分配新对象的情况下用特定值填充列表的一部分

2024-06-06 19:18:50 发布

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

有没有办法通过slice修改python列表,只使用一个值而不分配内存?在

像这样:

b = range(10)
b[2:5] = 1

这里的问题是关于记忆。我不想分配新对象,因为我在嵌入式系统上使用MicroPython,不必要的分配会影响性能。那么我应该使用循环还是有更优雅的方式呢?在

然而,我并不确定python中内存分配是如何工作的。我读过Python很聪明,它根据变量的使用情况在堆栈和堆中分配变量。因此,我不能说如果:

^{pr2}$

会给垃圾回收器带来一些麻烦。在


Tags: 对象记忆内存列表堆栈系统方式micropython
1条回答
网友
1楼 · 发布于 2024-06-06 19:18:50

当然,最好问问MicroPython开发人员。所以我做了这件事,揭示了很多有趣的事情。在

b[2:5] = [1]*3

分配新对象。 偶数

^{pr2}$

通过range调用分配内存。虽然我希望这个案例被单独处理以优化代码。尤其是当我们谈论嵌入式系统的python时。在

因此,我认为最有效的方法是使用while循环。在

x = x1
while x < x2:
    b[x] = 1
    x += 1

相关问题 更多 >