当前位置: 首页 > news >正文

python的range() 函数

range() 函数

《红楼梦》,又名《石头记》,实际上是一颗神石在人间游历的故事。而这块石头,就是我们的主人公贾宝玉。神石在投胎成宝玉前,向茫茫大士和渺渺真人讲起了自己的故事:

女娲氏炼石补天之时,于大荒山无稽崖炼成高十二丈、见方二十四丈大的顽石三万六千五百零一块。那娲皇只用了三万六千五百块,单单剩下一块未用,弃在青埂峰下。

这剩下的最后一块,自然就是这神石了……

女娲娘娘神通广大,创造了 36501 块石头。如果我们用列表来记录这些石头,大概就要写成:

stones = [1, 2, 3, 4, ..., 36500, 36501]

且慢,我们真的要手动输入这么多数字吗?(゜ ▽ ゜;) 能不能像女娲娘娘那样用神力瞬间完成呢?

当然啦!可以用 range() 函数实现,快速生成一个有规律的数字序列。该函数的基本格式为 range(start, stop, step),返回一个 range 对象,要用 list() 函数转换成列表。

range(start, stop, step)

计数从start开始,默认从1 开始        range(1, 5) :从1开始5结束不包含5

计数从stop结束,单不包括stop        range(11) :从0开始 11结束(不包含11)

奇数的间隔,不填默认为1                range(0, 30, 5) 从0开始,30结束(不包含30),隔5

range() 函数最多支持 3 个参数,start 参数是起始元素,stop 参数是结束元素,step 是步长,也就是计数的间隔。其中 start 和 step 是可选的,分别默认为 0 和 1,比如 list(range(3)) 可以快速生成 [0, 1, 2] 列表。

提示:如果你已经设好了 stop 参数和 step 参数的值,那 start 参数也必须填写哦!

# start 为 2, stop 为 5,步长默认为 1
list1 = list(range(2, 5))
print(list1)
# 输出:[2, 3, 4]# start 为 1, stop 为 9,步长为 2
list2 = list(range(1, 9, 2))
print(list2)
# 输出:[1, 3, 5, 7]# start 为默认值 0, stop 为 3,步长默认为 1
list3 = list(range(3))
print(list3)
# 输出:[0, 1, 2]

聪明的你一定已经发现,range() 的取值逻辑,和列表的切片是一样的, 选取范围包括起始位置,却不包括结束位置。这也是和我们之前说的切片设计逻辑是一样的道理,方便我们快速看出范围的元素数目。

好了,了解了 range() 生成数字序列的逻辑,我们就来创造这 36501 块补天石吧。在看下面的代码前,先自己想一想,range() 的三个参数要怎么填。

# 起始为 1, 结束为 36502(36501向后一位),步长默认为 1
stones = list(range(1, 36502))# 列表太长,我们不打印内容了,直接打印列表长度、第一个元素和最后一个元素。
print('共有' + str(len(stones)) + '个元素')
print('第一个元素是' + str(stones[0]))
print('最后一个元素是' + str(stones[-1]))
# 输出:
# 共有36501个元素
# 第一个元素是1
# 最后一个元素是36501

range(start, stop, step) 中,一定要记得 stop 参数是 最后一个截取数字 + 1。要是上面的代码写成 range(1, 36501),那宝玉这最后一块石头就造不出来,也没有我们《红楼梦》的精彩故事啦。

练习:

修改下列代码中 range() 函数中的 ???,使其运行结果打印出所有 大于等于 0,小于等于 100 且可以 被 3 整除 的自然数。

three_divided = list(range(???))
print(three_divided)

显然很简单:

three_divided = list(range(0,101,3))
print(three_divided)

相关文章:

  • 笔记:Windows故障转移集群下的oracle打补丁
  • 【数据结构】六种排序实现方法及区分比较
  • Java字符串String详解
  • 网络性能测试工具:iperf3介绍
  • 看图猜成语微信小程序源码
  • 利用预测大模型完成办公室饮水机剩余热水量
  • 视频汇聚管理安防监控平台EasyCVR程序报错“create jwtSecret del server class:0xf98b6040”的原因排查与解决
  • 【题解 | 分享】2023年十四届蓝桥杯国赛(Java B组)
  • 这里一定有你不知道的VS调试技巧
  • 【Java】刚刚!突然!紧急通知!垃圾回收!
  • 2024 rk
  • 记录【KVM更改br0网卡IP后,原来ip地址仍在问题】
  • 苍穹外卖数据可视化
  • js将dom转图片或文件
  • MySQL-事务日志
  • express.js的介绍及使用
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • js写一个简单的选项卡
  • Linux中的硬链接与软链接
  • Python学习之路13-记分
  • Vue官网教程学习过程中值得记录的一些事情
  • 浮现式设计
  • 力扣(LeetCode)965
  • 前嗅ForeSpider采集配置界面介绍
  • 使用SAX解析XML
  • 我的业余项目总结
  • 用Canvas画一棵二叉树
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​一些不规范的GTID使用场景
  • #微信小程序:微信小程序常见的配置传值
  • (12)目标检测_SSD基于pytorch搭建代码
  • (Git) gitignore基础使用
  • (Java)【深基9.例1】选举学生会
  • (ZT)一个美国文科博士的YardLife
  • (笔记自用)LeetCode:快乐数
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (附源码)计算机毕业设计大学生兼职系统
  • (一)kafka实战——kafka源码编译启动
  • .apk 成为历史!
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net dataexcel 脚本公式 函数源码
  • .Net Web窗口页属性
  • .NET 快速重构概要1
  • .net 无限分类
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET中分布式服务
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [2016.7.Test1] T1 三进制异或
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [C++]18:set和map的使用
  • [Doris]阿里云搭建Doris,测试环境1FE 1BE