那range()函数呢、?
Topic sourcerange(10)本身不是迭代器,一是它不能作用于next()函数,二是迭代器是惰性计算序列,可能无限长,而range(10)显然长度已经知道了,可以通过iter()函数将range(10)转化成为一个Iterator
range(10)不是迭代器,一是它不能作用于next()函数,二是迭代器是惰性计算序列,可能无限长,而range(10)显然长度已经知道了,但可以通过iter()函数将range(10)转化成为一个Iterator
range(10)不是迭代器,但是能生成可迭代对象
而且它也不是list类型,list(range(10))才是list类型
print(type(range(10)))
from collections.abc import Iterable,Iterator
print(type(range(10)))
print(isinstance(range(10), Iterable))
print(isinstance(range(10), Iterator))
<class 'range'>
True
False
Iteratable是可迭代的对象,Iterator是迭代器。
迭代器包含于可迭代的对象,也就是说,可迭代的对象(Iteratable)不一定是迭代器(Iterator),而迭代器(Iterator)一定是可迭代的对象(Iteratable)。
显然,range(10)可以迭代,所以他是一个可迭代对象,但并不是一个迭代器,也不是一个list。
用type函数可以看到,range(10)是range类型的数据。
>>> type(range(10))
<class 'range'>
- 1
- 2
孤月情风
range(10) 是迭代器吗?