什么是Python中的“物理存储序列”?

时间:2014-08-27 12:55:49

标签: python sequence

我目前正在阅读Mark Lutz撰写的学习Python第5版,并且遇到了短语" Physically Stored Sequence"。

根据我迄今为止所学到的,序列是一个对象,其中包含可以按从左到右的顺序索引的项目,例如字符串,元组和列表。

因此,对于"物理存储序列",这是一个由变量引用的序列,以便稍后在程序中使用吗?或者我没有得到它?

提前感谢您的回答。

1 个答案:

答案 0 :(得分:3)

通过对比可以最好地解释物理存储序列。它是一种“可迭代”类型,另一种类型的主要示例是“生成器”。

生成器是一个可迭代的,这意味着您可以像在“for”循环中一样迭代它,但它实际上并不存储任何东西 - 它只是在请求时吐出值。例如,伪随机数生成器,整个itertools包,或者您使用yield自己编写的任何函数。这些事情可以成为“for”循环的主题,但实际上并不“包含”任何数据。

物理存储的序列然后是包含其数据的可迭代的。示例包括Python中的大多数数据结构,例如列表。如果序列中的项具有任何特定的引用计数或类似的任何内容(例如,None对象在Python中只存在一次,那么[None, None]并不完全“存储” “它两次。”

物理存储序列的一个关键特性是你通常可以多次迭代它们,有时会获得除“第一个”以外的项目(当你在其上调用next()时,任何可迭代的项目)

所有这一切,这句话并不常见 - 当然不是你期望看到或用作工作日Python程序员的东西。