惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
M
MIT News - Artificial intelligence
G
Google Developers Blog
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
爱范儿
爱范儿
罗磊的独立博客
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
C
Check Point Blog
美团技术团队
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - runfox545

解决招生难!巧手智心 PMR 科创方案:趣味实验 留资 探园 报名全闭环 园长必看|3 套零压力招生 SOP,巧手智心 STEM 让延时班快速满班 让小手玩出智慧,让科学扎根童年 —— 巧手智心 STEM 幼儿园课程的温暖实践 巧手智心 STEM:园所科创教育主流标杆,铸就特色办学核心竞争力 为什么说巧手智心STEM特别适合尝试做科技特色教育的幼儿园? 巧手智心STEM和网上的科学盒子有什么区别 巧手智心STEM课程介绍 乐高VS巧手智心STEM 关于幼儿园STEM课程设计的思考 适合幼儿园开展的STEM课程品牌介绍及分析 白话带你理解什么是编程 什么是对象的方法 Python之列表推导式 英语对学习软件开发重要吗? 文件读写 神奇的字符编码 0基础转行程序员 路怎么走? Python之异常处理 Python基础之带你快速掌握列表的常用方法 print默认在末尾添加一个换行符,但其实也可以不用! Python做int()强制类型转换的时候,小数是如何取舍的?
python3中的range函数返回的是列表吗?
runfox545 · 2019-02-01 · via 博客园 - runfox545

注意,这里说的Python3里面的range函数,和Python2是不同的,返回的不是列表,是可迭代对象

在python3中,如果执行下面的语句

print(range(10))

得到结果是 range(0,10) ,而不是期望的[0,1,2,3,4,5,6,7,8,9]。但是如果换一种方式

print(list(range(10)))

得到的结果却是

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

那为什么会这样呢?其实在Python3中range()函数返回的对象很像一个列表,但是它确实不是一个列表,它只是在迭代的情况下返回指定索引的值,它并不会在内存中产生一个列表对象,官方解释说这样做是为了节约内存空间。通常我们称这种对象是可迭代的,或者是可迭代对象。

这里就要引入另外一个叫迭代器的概念,迭代器可以从一个可迭代对象中连续获取指定索引的值,直到索引结束。比如list()函数,所以在上面的例子中,我们可以用list()这个迭代器将range()函数返回的对象变成一个列表。

由此可以看出:range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型;list() 函数是对象迭代器,把对象转为一个列表,返回的变量类型为列表。