如何从 Pop-11制作与pdtolist等效的 Python?
假设我有一个名为g的生成器,它一次返回(比如说)一个整数。我想构建一个列表a当我要求超出列表当前末尾的值时自动增长。例如:
print a # => [ 0, 1, 2, g]
print a[0] # => 0
print a[1] # => 1
print a[2] # => 2
# (obvious enough up to here)
print a[6] # => 6
print a # => [ 0, 1, 2, 3, 4, 5, 6, g]
# list has automatically expanded
a = a[4:] # discard some previous values
print a # => [ 4, 5, 6, g]
print a[0] # => 4
术语 - 预测可能的误解:列表是“动态数组”,但这不是我的意思;我想要一个更抽象意义上的“动态列表”。
为了更好地解释动机,假设您有 999999999 项要处理。试图一次将所有这些都放入内存(在正常列表中)将是一个挑战。生成器通过一次呈现一个来解决这部分问题;每个都按需创建或从磁盘单独读取。但是假设在处理过程中您想引用一些最近的值,而不仅仅是当前值?您可以记住单独列表中的最后(例如)十个值。但是动态列表更好,因为它会自动记住它们。