42. range函数—生成器函数-更新

news2025/1/16 13:58:41

【目录】

文章目录

    • 1. range( )函数是什么?
    • 2. 知识回顾-列表的切片
    • 3. range( )函数的语法
      • 3.1 range( )函数语法
      • 3.2 参数说明
      • 3.3 列表切片和range函数的区别
    • 4. 实操练习
      • 4.1 参数为一个正整数
      • 4.2 参数为0
      • 4.3 参数为一个负整数
      • 4.4 有2个参数
      • 4.5 有3个参数
      • 4.6 步长为负数
    • 5. list不能完全替代range
    • 6. 课后练习
      • 6.1 练习1
      • 6.2 练习2
      • 6.3 练习3
    • 7. 总结

【正文】

1. range( )函数是什么?

range[reɪndʒ]:按一定的次数排列。

range的中文意思是按一定的次数排列。

【作用】

range( )函数:Python 内置的一个函数,用于生成一个数字序列。

2. 知识回顾-列表的切片

【列表切片取值语法】

列表名[star:end:step]

列表名[开始字符:结束字符:步长]

列表切片取值语法由4部分构成:

    1. 列表名。
    1. 英文中括号[]
    1. 3个参数(star,end,step)。
    1. 3个参数之间用英文冒号:分隔。

【代码示例】

# 新建一个str列表
str_list = ["当归", "人参",  "黄芪",  "红枣",  "枸杞",  "天麻",  "山楂"]

# 用列表切片法取值
print(str_list[0:4:2])

# type函数查看列表切片取值的数据类型
print("列表切片取值得到的数据类型仍然是列表:", type(str_list[0:4:2]))

【终端输出】

['当归', '黄芪']
列表切片取值得到的数据类型仍然是列表: <class 'list'>

【0:4:2代码解析】

start=0即开始元素的索引为0。索引0对应列表的第1个元素,即元素当归

end=4即结束元素的索引为4。索引4对应列表的第5个元素,即元素枸杞

注意切片的语法:含前不含后。即含开始元素,不含结束元素枸杞

step=2即步长为2。步长为2可以理解成一次性向前走2步,即要跳过1个列表元素。

在这里插入图片描述

3. range( )函数的语法

3.1 range( )函数语法

range(开始字符,结束字符,步长)

range( )函数由4部分组成:

    1. 函数名:range
    1. 英文圆括号括号:( )
    1. 3个参数(star,end,step)。
    1. 3个参数之间用英文逗号,分隔。

在这里插入图片描述

3.2 参数说明

    1. 参数start:表示起始的整数(包含该整数)。默认值为 0。如果没有指定 start 参数,range 函数会从 0 开始生成数字序列。
    1. 参数end:表示结束的整数(不包含该整数)。end参数是唯一一个没有默认值的参数。它表示生成的数字序列中的结束值,但不包含在序列中。必须指定 stop 参数的值。
    1. 参数step:表示步长。默认值为 1。如果没有指定 step 参数,range 函数会按照每次递增 1 的步长生成数字序列。如果省略,则默认为1,当省略该步长时,最后一个英文逗号也可以省略。

3.3 列表切片和range函数的区别

列表切片用英文中括号[],range函数用英文圆括号()

列表切片的3个参数用英文冒号:分隔。

range函数的3个参数用英文逗号,分隔。

列表[star:end:step]

range(star,end,step)

【重点提示】

列表切片取值和range函数生成序列的范围都包括开始字符,不包括结束字符对应的值,简单记忆为含前不含后

【返回值】

range函数返回的是一个range对象。

要查看range对象的内容,可以这样做:

list函数将range对象转换成列表。

tuple函数将range对象转换成元组。

【温馨提示】

range函数不能直接生成列表或元组,必需利用list、tuple函数将其转换成列表或元组。

4. 实操练习

4.1 参数为一个正整数

r = range(3)    # 创建一个range 函数,将结果赋值给变量r
print(r)        # 输出r,得到的是一个range对象
print(type(r))  # 用type函数查看r的数据类型
print(list(r))  # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组

【终端输出】

range(0, 3)
<class 'range'>
[0, 1, 2]
(0, 1, 2)

【参数解析】

这里range函数只有1个参数3

range函数有3个参数,但是只有end参数不能省略。

因此这里的3会传递给参数end

star 参数取默认值0

end 参数取值为3,输出范围不包括3

step 参数取默认值1

range(3) 等价于 range(0, 3, 1)。

【参数值如下】

start=0

end=3

step=1,即步长为1

在这里插入图片描述

【代码解析:返回值】

我们用type函数查看数据类型,返回的是<class 'range'>,即是一个range对象。

我们利用list将其转换成列表,我们可以发现列表中的元素就是一个数学中的等差数列。

为了方便理解,我们可以认为range函数在list函数的作用下,创建的就是一个等差数列。

数列的公差就是步长。

4.2 参数为0

r = range(0)    # 创建一个range 函数,将结果赋值给变量r
print(type(r))  # 用type函数查看r的数据类型
print(list(r))  # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组

【终端输出】

<class 'range'>
[]
()

【参数解析】

要重点关注range(0)的返回值。

这里range函数只有1个参数0

range函数有3个参数,但是只有end参数不能省略。

因此这里的0会传递给参数end

star 参数取默认值0

end 参数取值为0

step 参数取默认值1

range(0)从0开始到0结束,即range对象为空。因此终端只会输出一个空列表或空元组。

4.3 参数为一个负整数

r = range(-3)    # 创建一个range 函数,将结果赋值给变量r
print(type(r))  # 用type函数查看r的数据类型
print(list(r))  # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组

【终端输出】

<class 'range'>
[]
()

【参数解析】

star 参数取默认值0

end 参数取值为0

step 参数取默认值1

range(0)range(-3)一样,返回的都是空列表或空元组。

在 range 函数中,如果传入的 end 参数小于等于 start 参数,并且步长 step 的符号与 start - stop 的符号相同,那么生成的序列将为空。

start = 0
end = -3
step = 1
end < start 
step=0 符号为正
start-end=0-(-3)=3 符号为正

4.4 有2个参数

r = range(2,5)  # 创建一个range 函数,将结果赋值给变量r
print(r)        # 输出r 
print(type(r))  # 用type函数查看r的数据类型
print(list(r))  # 用list函数将range对象转换为列表

【终端输出】

range(2, 5)
<class 'range'>
[2, 3, 4]

【参数解析】

有2个参数的时候,step 取默认值1

start=2,从2开始,包含2

end=5,到5结束,不包含5

step=1,步长为1。

因此输出结果为2,3,4。

4.5 有3个参数

r = range(2,11,3)    # 创建一个range 函数,将结果赋值给变量r
print(type(r))  # 用type函数查看r的数据类型
print(list(r))  # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组

【终端输出】

<class 'range'>
[2, 5, 8]
(2, 5, 8)

【参数解析】

start=2,从2开始,包含2

end=11,到11结束,不包含11

step=3,步长为3,也可以理解为公差为3的等差数列。

第1个数为2。
第2个数为2+3=5。
第3个数为5+3=8。
第4个数为8+3=11。(不包含)
因此输出列表中有2,5,8三个数。

4.6 步长为负数

r = range(15,0,-5)    # 创建一个range 函数,将结果赋值给变量r
print(type(r))  # 用type函数查看r的数据类型
print(list(r))  # 用list函数将range对象转换为列表
print(tuple(r)) # 用tuple函数将range对象转换为元组

【终端输出】

<class 'range'>
[15, 10, 5]
(15, 10, 5)

【range(15,0,-5)代码解析】

start=15,从15开始,包含15

end=0,到0结束,不包含0

step=-5,步长为-5,也可以理解为公差为-5的等差数列。

第1个数为15。
第2个数为15-5=10。
第3个数为10-5=5。
第4个数为5-5=0。(不包含)
因此输出列表中有15,10,5三个数。

5. list不能完全替代range

range函数和list函数最终都能生成一个列表,但两个函数各有优缺点。

# 创建一个整数列表
int_list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
print(int_list)

r=range(20)
print(list(r))

【终端输出】

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

观察上面的代码,我们发现用range函数创建一个有规律的整数列表更为便捷。

list函数需要写20个元素,但range函数最多写3个参数就可以完成。

6. 课后练习

6.1 练习1

使用 range 函数生成一个从 1 到 10(包括1和10)的数字序列,并计算这些数字的总和。

【代码示例】

# 使用 range 函数生成数字序列,并计算总和
sum = 0
for x in range(1, 11):
    sum += x

print("总和为:", sum)

【终端输出】

总和为: 55

【代码解析】

  • sum = 0创建一个变量 sum 并初始化为 0,用于存储总和的结果。

  • for x in range(1, 11):使用 for 循环遍历从 1 到 10(包括 1 和 10)的数字序列。

  • sum += x:在每次循环中,将当前的数字 x 加到 sum 变量中,实现累加操作。

  • print("总和为:", sum):在循环结束后,打印出计算得到的总和。

【执行过程】

  • 初始时,sum 的值为 0。
  • 进入循环,第一次迭代时 x 的值为 1,将其加到 sum 中,此时 sum 的值变为 1。
  • 继续循环,依次迭代 x 的值为 2、3、4、5、6、7、8、9、10,每次都将其加到 sum 中。
  • 循环结束后,sum 的值为从 1 到 10 的数字序列的总和,即 55。
  • 最后,打印出 “总和为: 55”。

6.2 练习2

【len函数知识回顾】

len() 函数是一个内置函数,用于返回一个对象(如字符串、列表、元组等)的长度或元素个数。

my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length)  # 输出:5

【终端输出】

5

【目标任务】

用range函数来遍历一个列表,依次输出列表中的元素。

【代码示例】

str_list = ["当归", "人参",  "黄芪",  "红枣",  "枸杞",  "天麻",  "山楂"] # 新建一个str列表
for i in range(len(str_list)):
    print(str_list[i], end=",")
当归,人参,黄芪,红枣,枸杞,天麻,山楂,

【代码解析】

str_list = [“当归”, “人参”, “黄芪”, “红枣”, “枸杞”, “天麻”, “山楂”] # 新建一个str列表

  • 创建一个名为 str_list 的字符串列表,其中包含了几个中药的名称。
for i in range(len(str_list)):
  • 使用 for 循环遍历 str_list 列表中的每一个元素。
  • range(len(str_list)) 返回一个从 0 到 len(str_list)-1 的数字序列,作为循环的索引。
  • len(str_list)的值为7
  • for i in range(len(str_list))等同与于for i in range(7)
print(str_list[i], end=",")
  • 在每次循环中,通过索引 i 获取到 str_list 列表中的对应元素,并将其打印出来。
  • end="," 参数指定打印结束后的字符为英文逗号。

【执行过程】

  • 循环开始,初始时 i 的值为 0。
  • 第一次循环中,通过索引 0 获取到 str_list 中的第一个元素 “当归”,然后将其打印出来,并在末尾添加逗号。
  • 继续循环,依次迭代 i 的值为 1、2、3、4、5、6,每次都通过索引获取到对应位置的字符串,并打印出来,并在末尾添加逗号。
  • 当 i 的值达到 len(str_list)-1(即 6)时,循环结束。

6.3 练习3

用range输出5次下面的语句:

安迪python学习笔记

【代码示例】

for i in range(5):
    print('安迪python学习笔记')

【终端输出】

安迪python学习笔记
安迪python学习笔记
安迪python学习笔记
安迪python学习笔记
安迪python学习笔记

7. 总结

【代码总结】

print(list(range(0)))    # 返回一个空列表
print(list(range(-3)))   # 返回一个空列表

print(list(range(3)))       #  返回列表[0,1,2]
print(list(range(2,5)))     # 返回列表[2,3,4]
print(list(range(2,11,3)))  # 返回列表[2,5,8]
print(list(range(15,0,-5))) # 返回列表[15,10,5]

【终端输出】

[]
[]
[0, 1, 2]
[2, 3, 4]
[2, 5, 8]
[15, 10, 5]

range函数如果只有一个参数,且这个参数的值为0或负数时range对象为空,用list函数输出时返回一个空列表。

【图片总结】

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/869247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Freertos基础入门】freertos任务的优先级

文章目录 前言一、任务优先级1.Tick2.修改任务优先级 总结 前言 本系列基于stm32系列单片机来使用freerots 任务管理是实时操作系统&#xff08;RTOS&#xff09;的核心功能之一&#xff0c;它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTOS&…

使用关键词一站式精准搜索指定期刊或会议论文集中的论文

问题描述 如题&#xff0c;例如&#xff0c;想要找点某主题的相关文献&#xff0c;当然要看本领域权威刊物了&#xff0c;假如你想从CCF人工智能类A级期刊找点文本相似度的论文&#xff0c;逐个点开期刊主页进行搜索&#xff0c;那就有点繁琐&#xff0c;不是一站式。 解决方…

小程序商城开发制作

当开发一个商城小程序时&#xff0c;费用是一个非常重要的考虑因素。然而&#xff0c;准确回答这个问题是有一定困难的&#xff0c;因为开发商城小程序的费用取决于多个因素。以下是一些可能影响价格的主要因素&#xff1a; 1. 功能需求&#xff1a;商城小程序的复杂程度和功能…

华为:为员工提供高质量住宿和配套服务,不对外经营房地产业务

华为官方发布声明指出&#xff0c;东莞棠雅实业投资有限公司是一家专门负责建设和管理华为员工园区配套人才房的公司&#xff0c;而不是从事房地产业务的企业。这意味着该公司的主要职责是为华为数万名员工提供高质量的住宿和配套服务&#xff0c;为其创造舒适便利的工作和生活…

[SpringBoot3]基础篇

二、SpringBoot基础篇 2.1什么是SpringBoot SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;其目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能&#xff0c;比如自动化配置starter&#xff08;启动器&a…

【配置环境】Linux下安装MySQL

目录 一&#xff0c;环境 二&#xff0c;安装步骤 1.使用包管理器安装MySQL 2.配置MySQL的安全选项 3.设置root用户使用密码进行身份验证&#xff08;可选&#xff09; 三&#xff0c;拓展知识 1.如何修改MySQL的密码策略&#xff1f; 一&#xff0c;环境 VMware Workst…

Linux —— 文件系统

目录 一&#xff0c;背景 二&#xff0c;文件系统 一&#xff0c;磁盘简介 磁盘分为SSD、机械磁盘&#xff1b;机械磁盘&#xff0c;即磁盘高速转动&#xff0c;磁头移动到读写扇区所在磁道&#xff0c;让磁头在目标扇区上划过&#xff0c;即可完成对扇区的读写操作&#xff…

数字经济对产业结构升级和创业增长的影响(2011-2021年)

参照刘翠花&#xff08;2022&#xff09;的做法&#xff0c;对来自中国人口科学《数字经济对产业结构升级和创业增长的影响》一文中的基准回归部分进行复刻。文章从理论层面分析数字经济发展对产业结构升级、创业增长的影响及其机理&#xff0c;并利用2011-2021年中国省级面板数…

数据结构刷题训练:用栈实现队列(力扣OJ)

目录 前言 1. 题目&#xff1a;用栈实现队列 2. 思路 3. 分析 3.1 定义 “ 队列 ” 3.2 创建队列 3.3 入队 3.4 队头数据 3.5 出队 3.6 判空和销毁 4.题解 总结 前言 栈和队列是数据结构中的两个重要概念&#xff0c;它们在算法和程序设计中都有着广泛的应用。本文将带你深入了…

K8S系列文章之 Docker安装使用Kafka

通过Docker拉取镜像的方式进行安装 照例先去DockerHub找一下镜像源&#xff0c;看下官方提供的基本操作&#xff08;大部分时候官方教程比网上的要清晰一些&#xff0c;并且大部分教程可能也是翻译的官方的操作步骤&#xff0c;所以直接看官方的就行&#xff09; 老实说Kafka…

EVE-NG MPLS L2VPN BGP pw -- static route,static mpls lsp

1 拓扑 2 配置步骤 2.1 配置接口IP 和静态路由 PE1 interface LoopBack 0ip address 1.1.1.9 32 quitinterface GigabitEthernet 1/0ip address 10.1.1.1 255.255.255.0quitip route-static 2.2.2.9 32 10.1.1.2 ip route-static 3.3.3.9 32 10.1.1.2 P interface LoopBac…

AI绘图(4)stable diffusion如何写好prompt 二

在进行绘制时&#xff0c;会添加很多的风格或细节来进行描述土拍你&#xff0c;当然也会由一些专业的词汇&#xff0c;如广角、相片、3d模型等&#xff0c;下面我们就会具体进行介绍。 1、「风格」的提示词 相片(photshop)、3D建模(3d model)、装饰艺术(art deco)、石像(ston…

Matlab时频工具箱tftb下载及安装

Matlab 时频工具箱下载及安装 首先下载安装包安装包地址如下 链接: https://tftb.nongnu.org/ 点击下面的download 跳转到如下界面&#xff0c;选择下面的安装包下载 下载之后得到一个压缩包 然后找到Matlab的安装目录&#xff0c;右键桌面图标&#xff0c;打开文件所在位置…

怎么申请Tik Tok海外菲律宾公会呢?

2023年是承上启下的一年&#xff0c;对于TIKTOK来说是一个大的机遇和风口&#xff0c;是大势所趋&#xff1b;相对于其他的跨境电商平台&#xff0c;Y马逊、X皮、S卖通这些传统电商平台来说,TikTok是属于兴趣电商&#xff0c;和国内DY是一样的&#xff0c;它的平台运营规申请cm…

论文阅读:《Waymo Public Road Safety Performance Data》

文章目录 1 背景2 方法2.1 数据来源2.2 碰撞数据 3 碰撞事件分析4 讨论 1 背景 这篇文章是讲waymo道路安全性能数据分析的&#xff0c;主要想表达的是waymo自动驾驶系统在安全上面的出色表现&#xff0c;以向政府、大众提高自己产品的公信力。 这篇文章分析的数据是自从2019年到…

防火墙组建双击热备后,点击管理对端设备,老是打不开,怎么办?

环境&#xff1a; 防火墙 8.0.75 AF-2000-FH2130B-SC 问题描述&#xff1a; 防火墙组建双击热备后&#xff0c;点击管理对端设备&#xff0c;老是打不开&#xff0c;怎么办&#xff1f; 浏览器老是加载 解决方案&#xff1a; 1.打开设置查看双机连接的心跳接口是哪个端口 …

SpringBoot复习:(36)国际化

一、Resources目录下建立一个目录&#xff08;比如international)来存储资源文件 message.properties 空的&#xff0c;但不能没有 message_zh_CN.properties hello您好message_en_us.properties hellohello world二、自动配置类MessageSourceAutoConfiguration 常量MESSAGE…

深度学习常用的python库学习笔记

文章目录 数据分析四剑客Numpyndarray数组和标量之间的运算基本的索引和切片数学和统计方法线性代数 PandasMatplotlibPIL 数据分析四剑客 Numpy Numpy中文网 ndarray 数组和标量之间的运算 基本的索引和切片 数学和统计方法 线性代数 Pandas Pandas中文网 Matplotlib Mat…

ThinkPHP成考学员管理平台

有需要请加文章底部Q哦 可远程调试 ThinkPHP成考学员管理平台 一 介绍 成考学员管理平台基于FastAdmin框架开发&#xff0c;数据库mysql&#xff0c;是一款针对学员&#xff0c;教师&#xff0c;专业&#xff0c;课程&#xff0c;成绩&#xff0c;学费等信息管理的系统&#…

【算法】排序+双指针——leetcode三数之和、四数之和

三数之和 &#xff08;1&#xff09;排序双指针 算法思路&#xff1a; 和之前的两数之和类似&#xff0c;我们对暴力枚举进行了一些优化&#xff0c;利用了排序双指针的思路&#xff1a; 我们先排序&#xff0c;然后固定⼀个数 a &#xff0c;接着我们就可以在这个数后面的区间…