gpt4 book ai didi

Python,惰性列表

转载 作者:太空狗 更新时间:2023-10-29 19:34:59 26 4
gpt4 key购买 nike

是否可以在 Python 中延迟计算列表?

例如

a = 1
list = [a]
print list
#[1]
a = 2
print list
#[1]

如果列表设置为惰性求值,那么最后一行将是 [2]

最佳答案

“惰性”求值的概念通常伴随函数式语言出现——但在这些语言中,您无法将两个不同的值重新分配给同一个标识符,因此,即使在那里,您的示例也无法重现。

重点根本不是懒惰——而是保证使用标识符与获取对标识符所引用的相同值的引用是相同的,并且重新分配一个标识符,一个裸名,到一个不同的值,保证使标识符引用一个与它们不同的值。对第一个值(对象)的引用不会丢失。

考虑一个类似的例子,其中没有重新分配给裸名,而是任何其他类型的突变(当然,对于可变对象——数字和字符串是不可变的),包括对某物的分配 < strong>else 不是裸名:

>>> a = [1]
>>> list = [a]
>>> print list
[[1]]
>>> a[:] = [2]
>>> print list
[[2]]

因为没有 a - ... 重新分配裸名 a,而是 a[:] = ... 重新分配 acontents,很容易让 Python 像你希望的那样“懒惰”(事实上,让它变得“急切”需要一些努力! -)...如果懒惰与渴望与这两种情况中的任何一种有任何关系(事实并非如此;-)。

只需注意“分配给一个裸名”的非常简单的语义(与分配给其他任何东西,可以通过适本地使用您自己的类型进行各种调整和控制),以及“懒惰与渴望”的视觉错觉"可能会消失;-)

关于Python,惰性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399194/

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