gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:09:57 24 4
gpt4 key购买 nike

有没有什么方法可以在不分配内存的情况下通过只有一个值的切片来修改 python 列表?

类似的东西:

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

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

但是,我不太确定内存分配在 Python 中是如何工作的。我读过 Python 很聪明,可以根据用途在堆栈和堆中分配变量。因此我不能说如果:

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

将为垃圾收集器创建一些工作。

最佳答案

自然最好向 MicroPython 开发人员询问这方面的问题。所以我这样做了,并揭示了许多有趣的事情。

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

确实分配新对象。甚至

for i in range(x, y):
b[i] = 1

通过 range 调用分配内存。尽管我希望这种情况会被单独处理以优化代码。特别是当我们谈论用于嵌入式系统的 Python 时。

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

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

关于python - 在不分配新对象的情况下用特定值填充列表的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41858922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com