遍历可迭代对象(2)
本章中您学到的一点是:并非所有可迭代对象都是"真正的"列表。我们看过的两个例子是字符串和 range() 函数。本练习将聚焦 range() 函数。
您可以在 for 循环中把 range() 当作要被遍历的列表来使用:
for i in range(5):
print(i)
请回忆:range() 实际上并不会创建列表;它会创建一个带有迭代器的 range 对象,迭代器会按序产生值,直到达到上限(在示例中,直到值 4)。如果 range() 真去创建那个列表,那么用 \(10^{100}\) 这样的值来调用它可能就无法工作,尤其是因为这样巨大的数字可能会超出普通计算机的内存。\(10^{100}\) 实际上被称为一个 Googol(古戈尔数),即 1 后面跟着 100 个 0。这个数字非常巨大!
本练习的任务是证明:用 \(10^{100}\) 来调用 range() 并不会预先创建整个列表。
本练习是课程的一部分
Python 工具箱
练习说明
- 使用函数
iter()在range(3)上创建一个迭代器对象small_value。 - 使用
for循环遍历range(3),在每次迭代时打印该值。将num作为循环变量。 - 在
range(10 ** 100)上创建一个迭代器对象googol。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create an iterator for range(3): small_value
small_value = ____
# Print the values in small_value
print(next(small_value))
print(next(small_value))
print(next(small_value))
# Loop over range(3) and print the values
# Create an iterator for range(10 ** 100): googol
googol = ____
# Print the first 5 values from googol
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))