PYTHON_KA Asked:2023-12-09 05:40:32 +0000 UTC2023-12-09 05:40:32 +0000 UTC 2023-12-09 05:40:32 +0000 UTC Python 中的范围函数 772 您能告诉我列表与范围函数有何关系吗?写得不清楚:“默认情况下,range 函数创建一个数字序列,列表中每个后续数字加 1”(参见屏幕截图)。在第二个屏幕截图中,我对“第二个参数 (10) 是列表的最终限制”条目感到困惑。 python 1 个回答 Voted Best Answer MarianD 2023-12-09T08:21:22Z2023-12-09T08:21:22Z 前言: 老师对学生:“写出从1到100的所有数字!” 老师发音这个没有困难 - 他只用了2 个数字, 但这对学生来说是一项繁重的工作——他必须写出100 个数字。 为了理解某种类型的对象存在的意义range以及它是什么类型的对象,让我们需要一个包含从 10 到 1000 万的所有偶数的巨大列表。 是的,你可以这样问 lst = [10, 12, 14, 16, 18, 20, ..., 10_000_000] 但是您必须手写所有近500 万个偶数,而不是三个点。 range(10, 10_000_001, 2)矮得多。 range(10, 10_000_001, 2)不是一个列表,它不占用内存中的近500 万个单元(见下文)。 range(10, 10_000_001, 2)只是如何获取一个数字的秘诀- 首先是第一个(10),然后是第二个(12),然后是第三个(14),依此类推,再次节省内存。 range(10, 10_000_001, 2)知道何时停止给出更多数字(在数字 1000 万之后,即达到限制之前)。 您甚至可以使用一个数字作为限制10_000_002,但什么都不会改变。 好吧,现在问题出现了 - 如何强制一个类型的对象,range() 以便这个配方开始工作,即 逐渐给出越来越多的数字? 将其用作标准函数(构造函数)list()或tuple(). 然后它(类型的对象range)将以极快的速度为您完成您必须手动执行的操作,正如我在这个答案的开头所暗示的那样: lst = list(range(10, 10_000_001, 2)) # [10, 12, ..., 10_000_000] 或者 tpl = tuple(range(10, 10_000_001, 2)) # (10, 12, ..., 10_000_000) 但对于如此大量的数字,这是不合理的 - 这样你就会失去type 对象的主要优势rangе,即 节省内存。 循环应用它for: for i in range(10, 10_000_001, 2): 内存中始终只有一个数字——变量的当前值i。
前言:
老师对学生:“写出从1到100的所有数字!”
为了理解某种类型的对象存在的意义
range
以及它是什么类型的对象,让我们需要一个包含从 10 到 1000 万的所有偶数的巨大列表。是的,你可以这样问
但是您必须手写所有近500 万个偶数,而不是三个点。
range(10, 10_000_001, 2)
矮得多。range(10, 10_000_001, 2)
不是一个列表,它不占用内存中的近500 万个单元(见下文)。range(10, 10_000_001, 2)
只是如何获取一个数字的秘诀- 首先是第一个(10),然后是第二个(12),然后是第三个(14),依此类推,再次节省内存。range(10, 10_000_001, 2)
知道何时停止给出更多数字(在数字1000 万之后,即达到限制之前)。
您甚至可以使用一个数字作为限制
10_000_002
,但什么都不会改变。好吧,现在问题出现了 - 如何强制一个类型的对象,
range()
以便这个配方开始工作,即 逐渐给出越来越多的数字?将其用作标准函数(构造函数)
list()
或tuple()
.然后它(类型的对象
range
)将以极快的速度为您完成您必须手动执行的操作,正如我在这个答案的开头所暗示的那样:或者
但对于如此大量的数字,这是不合理的 - 这样你就会失去type 对象的主要优势
rangе
,即 节省内存。循环应用它
for
:内存中始终只有一个数字——变量的当前值
i
。