Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python3中range函数的变化

python3中range函数的变化

作者头像
py3study
发布于 2020-01-09 07:51:33
发布于 2020-01-09 07:51:33
1K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

Introduction

今天写代码需要生成一个整数构成的list,于是很自然地想到range函数。可以当我将生成的内容传入一个需要list参数的函数中,奇怪的事情发生了,竟然提示传入的不是一个list。于是上网寻求解决方法,并进行验证。原来在python3中range的实现变了,并不是返回一个list类型,而是返回一迭代对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(type(range(1,4)))
# 输出:<class 'range'>
print(range(1,4))
# 输出:range(1, 4)
a = list(range(1,4))
print(type(a))
#输出:<class 'list'>
for i in range(1,4):
    print(i)
#输出:1 2 3

Explain

可以看到range()函数返回的是一个range对象。不过可以使用list()函数将其转换成list对象。range是一个可迭代的对象,可以使用for循环迭代输出。 貌似这样的设计很反人类,但是设计者这样设计,一定是为了某些特殊的原因。这种设计其实为了节省内存,官网有英文的说明。下面是一位网友给出的翻译。 在很多种情况下,range()函数返回的对象的行为都很像一个列表,但是它确实不是一个列表,它只是在迭代的情况下返回指定索引的值,但是它并不会在内存中真正产生一个列表对象,这样也是为了节约内存空间。

我们称这种对象是可迭代的,或者是可迭代对象,还有一种对象叫迭代器,它们需要从一个可迭代对象中连续获取指定索引的值,一直到索引结束。list()函数就是这样一个迭代器,它可以把range()函数返回的对象变成一个列表。

Summary

range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。 list() 函数是对象迭代器,把对象转为一个列表。返回的变量类型为列表。

参考文章:python3中的range函数

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python基础知识
我们之所以能通过 for 方法如此轻松的打印这些内容,从本质上说是因为列表元组等这些东西是一个可迭代对象。而 for 方法则可以调用迭代器对象的方法来实现对整个迭代对象的遍历。for 驱动可迭代对象调用 iter()返回了一个有next()方法的迭代器对象(可以通过 next()访问),该方法可以逐一访问对象中的所有元素。
爱编程的小明
2022/09/05
6140
python基础知识
Python自动化开发学习3-2-匿名函数、内置函数
下面这部分内容计划应该是第三周讲的,但是应该是当时来不及,第四周上来的内容又比较重要,就放到了第四周讲完后才讲了。
用户7886150
2021/01/28
2820
Python3 高级特性
掌握了 Python 的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。但是我们还需要掌握Python的一些高级特性,精简代码。一行代码能实现的功能,绝不写5行代码。Python的高级特性:切片,迭代,列表生成式,生成器,迭代器。
嵌入式视觉
2022/09/05
5070
Python3 高级特性
range() 函数
Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
Python知识大全
2020/02/12
6660
Python的range和map函数
函数式编程(Functional programming)是一种编程范式,目前没有统一的定义。对于并发编程有广泛应用。Python中,range,map,filter,zip等属于函数式编程。
fem178
2021/08/20
1.1K0
Python3 编程笔记
python 读取文件有三种方法:read(), readline(), radlines()
嵌入式视觉
2022/09/05
8870
Python3 编程笔记
Python3学习笔记 | 十六、Python的语句与语法-迭代器和解析(1)
之前章节中,我们看到for语句可以Python任何序列类型,包括列表、元祖以及字符串。如下所示:
TeamsSix
2019/09/24
7260
Python2和Python3的区别简单总结
Python是一种新的计算机语言,也是最近两年才开始大火的一种语言,它够优雅,写起来可以随心所欲,不用担心没有定义,没有声明这些其他计算机语言都需要考虑的问题,单自从更新Python3.x版本之后,很多人开始头疼,因为Python3很多地方并不兼容Python2,有人夸张的说Python3是一门新的语言,我觉得没有那么夸张,本文就剧一下我遇到的和一些知道的区别吧
earthchen
2020/09/21
5230
python迭代和解析(3):range
range()是一个内置函数,它返回一个数字序列,功能和Linux下的seq命令差不多。
py3study
2020/01/21
7310
Python2 和 Python3 的
最近 Python 之父 Guido van Rossum(龟爷)终于在 Python 官方邮件组落实了 Python 2.7 的终焉之日(EOL)。 说的是 Python 2.7 的 EOL 日期最终确定为 2020 年 1 月 1 日,之后不会有任何更新,包括源码的安全补丁。 所以兼容Python3已经可以说非常必要了,但有些常用的库还没有升级到Python3,所以我们看下如何写出兼容2和3的代码。 Python 2 or 3 ?
py3study
2020/01/02
7910
Python range() 函数
range()是python的内置函数,用的地方挺多的,目前我经常会在for循环中作为循环的次数来使用,其实range()的用法不仅仅如此,本文给大家介绍下。
py3study
2020/01/16
7620
Python3 | 筑基期, 推导式、迭代器、生成器!
描述:前面,我们一起学习了Python3开发中使用最多的函数(Function),相信大家在作者的实践下也已经掌握函数的创建、多参数的传递,以及匿名函数、闭包了吧,这一章我们一起学习Python3编程中的推导式、迭代器以及生成器等相关知识,它也是Python编程中进阶常用的部分,对于程序健壮性以及效率都有所帮助,所以说也是需要我们掌握的。
全栈工程师修炼指南
2024/07/29
1060
Python3 | 筑基期, 推导式、迭代器、生成器!
Python循环这样写,高效节省内存100倍!
在打印内容字节数较小时,全部载入内存后,再打印,没有问题。可是,如果现在有成千上百万条车辆行驶轨迹,叫你分析出其中每个客户的出行规律,堵车情况等,假如是在单机上处理这件事。
double
2019/11/14
1.3K0
Python语句与语法
在python里是不使用{}或者别的符号来限制语句的开始和结尾的,一个语句的开始(除了复合语句),就是开头,换行就是结束。在开头,不能随意增加空格:
没有故事的陈师傅
2019/07/28
1.2K0
08 . Python3高阶函数之迭代器、装饰器
你:可以呀,可以写成plus = lambda x:x+1类似这样,以后再调用plus就可以了,但这样不就失去了lambda的意义了,明明人家叫匿名函数呀,你起了名字有什么用呢?
iginkgo18
2020/09/27
6280
08 . Python3高阶函数之迭代器、装饰器
Python3中zip函数使用详解
在 Python 2.x中,zip() 函数返回的是一个列表。在Python3中,zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组(Tuple),然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
程序新视界
2023/05/03
4150
python3–函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。 任何一个比较牛逼的程序均由多个函数封装而成。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返
老七Linux
2018/05/09
1.8K0
python 可迭代对象 迭代器 生成器_Python3迭代器获取
初学者在日常提升Python基本功的时候,可能会被Python的迭代器和生成器搞晕,之前在学习和使用时,本来for in 循环体和enumerate函数用的飞起,觉得自己已经彻底了解了Python的迭代特性,但接触了迭代器和生成器后,突然感觉懵逼,大概率会被可迭代、迭代器、生成器等概念搞的不知所向,本文就是结合日常项目应用,对Python的迭代概念进行系统性的全面解析,包括其底层实现原理,还有一些常见的应用,希望能帮助更多人,同时也算作给自己梳理思路。
全栈程序员站长
2022/11/10
1.1K0
python面试总结_python面试题总结(1)
int、float、str、set、list、dict、tuple、frozenset、bool、None。
用户7886150
2021/01/13
1K0
小说python中的迭代器(Iterator)
小说python2和python3的差异一文中, 在说明range,xrange,map的差异时 提到Iterable和Iterator,有朋友反馈没留意过这两个东东, 这里就小说一把,认识一下 It
用户2196567
2018/07/02
6720
相关推荐
python基础知识
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验