Discuss / Python / 那range()函数呢、?

那range()函数呢、?

Topic source

孤月情风

#1 Created at ... [Delete] [Delete and Lock User]

range(10) 是迭代器吗?

TypeError: 'range' object is not an iterator

尝试了一下,不是

range(10)本身不是迭代器,一是它不能作用于next()函数,二是迭代器是惰性计算序列,可能无限长,而range(10)显然长度已经知道了,可以通过iter()函数将range(10)转化成为一个Iterator

W·Sheeeer

#4 Created at ... [Delete] [Delete and Lock User]

是一个list

DinosaurSir

#5 Created at ... [Delete] [Delete and Lock User]

range(10)不是迭代器,一是它不能作用于next()函数,二是迭代器是惰性计算序列,可能无限长,而range(10)显然长度已经知道了,但可以通过iter()函数将range(10)转化成为一个Iterator

緆風

#6 Created at ... [Delete] [Delete and Lock User]

range(10)是list,而list不是迭代器

凡响skyline

#7 Created at ... [Delete] [Delete and Lock User]

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

凡响skyline

#8 Created at ... [Delete] [Delete and Lock User]

说range()是list的是怎么看的教程。。。

Iteratable是可迭代的对象,Iterator是迭代器。

迭代器包含于可迭代的对象,也就是说,可迭代的对象(Iteratable)不一定是迭代器(Iterator),而迭代器(Iterator)一定是可迭代的对象(Iteratable)。

显然,range(10)可以迭代,所以他是一个可迭代对象,但并不是一个迭代器,也不是一个list。

用type函数可以看到,range(10)是range类型的数据。

>>> type(range(10))
<class 'range'>

zhr305

#10 Created at ... [Delete] [Delete and Lock User]

>>> isinstance(range(10),Iterable)

True

>>> isinstance(range(10),Iterator)

False


  • 1
  • 2

Reply