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

【目录】

文章目录

    • 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.mfbz.cn/a/71539.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode extension 怎么区分dev prod

开发模式注入环境变量 使用vsode 提供的api

利用Torchmetrics库快速进行Torch的评价指标计算(推荐)

目录 1、安装 2、基本流程介绍 3、MetricCollection 4、自定义指标 5、我们可以调用多个指标计算不同的任务 6、可以是标签,也可以是one_hot编码 7、常用分类指标计算 8、异常报错 1、安装 官网地址:Welcome to TorchMetrics — PyTorch-Metrics 1.0.1 documenta…

掌握Python的X篇_34_Python朗读文字

各种广告中说python是人工智能的主宰&#xff0c;其实这更多是噱头的成分&#xff0c;但是python确实可以做很多的事情&#xff0c;本篇将会介绍利用pythonAI平台来合成声音。今天将会用到的是百度。 文章目录 1. baiToVoice2. 注册appid3. 合成代码 1. baiToVoice 使用百度A…

创建多图层叠加效果的背景与人物图像

引言&#xff1a; 在现代应用程序开发中&#xff0c;图形资源的使用是非常常见的&#xff0c;特别是在用户界面设计中。通过使用TImageList和TGlyph组件的组合&#xff0c;我们可以实现令人印象深刻的多图层叠加效果。本文将介绍如何使用这两个组件来创建背景和人物的多图层叠加…

Idea创建maven管理的web项目

如果你想在项目中添加一个传统的 src 目录来存放源代码&#xff0c;可以按照以下步骤操作&#xff1a; 1. 在项目视图中&#xff0c;右键单击项目名称&#xff0c;选择 “New” -> “Directory”。 2. 在弹出的对话框中&#xff0c;输入目录名称为 “src”&#xff0c;然后…

Camunda 7.x 系列【3】Camunda 简介

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址&#xff1a;https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 核心组件2.1 流程引擎2.2 模型2.3 Web…

金融反欺诈的应用实践

“根据980起全球重大金融欺诈事件分析&#xff0c;60%的欺诈发生在移动端&#xff0c;同比增长170%。“&#xff0c;在香港近日举办的金融科技沙龙上&#xff0c;顶象金融业务安全专家史博表示&#xff0c;金融业已成为不法分子重要的攻击对象。 本届金融科技沙龙由Databricks…

【Linux 网络】 数据链路层协议

数据链路层协议 数据链路层解决的问题以太网协议认识以太网以太网帧格式 认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 总结 数据链路层解决的问题 IP拥有将数据跨…

Springboot04--vue前端部分+element-ui

注意点&#xff1a; 这边v-model和value的区别&#xff1a;v-model是双向绑定的&#xff0c;value是单向绑定 li的key的问题 vue的组件化开发&#xff1a; 1. NPM&#xff08;类似maven&#xff0c;是管理前段代码的工具&#xff09; 安装完之后可以在cmd里面使用以下指令 2.…

智汇云舟入选IDC《中国智慧城市数字孪生技术评估,2023》报告

8月7日&#xff0c;国际数据公司&#xff08;IDC&#xff09;发布了《中国智慧城市数字孪生技术评估&#xff0c;2023》报告。智汇云舟凭借在数字孪生领域的创新技术与产品&#xff0c;入选《2023中国数字孪生城市技术提供商图谱》。 报告通过公开征集的形式进行申报&am…

大数据课程I2——Kafka的架构

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的架构&#xff1b; ⚪ 掌握Kafka的Topic与Partition&#xff1b; 一、Kafka核心概念及操作 1. producer生产者&#xff0c;可以是一个测试线程&#xff0c;也…

80. 删除有序数组中的重复项 II

题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 解题思路&#xff1a;因为数组有序&#xff0c;相等的元素一定相邻&#xff0c;所以可以使用一个变量num统计相等元素的个数&#xff0c;如果当前元素和前一个元素相等&#xff0c…

Java解决四大查找(一)

Java解决四大查找 一.线性查找1.1 题目1.2 思路分析1.3 代码演示 二.二分查找(双指针法)2.1 题目2.2 思路分析(图解加文字)2.3 代码演示 一.线性查找 1.1 题目 在数组{1&#xff0c;8&#xff0c;1024&#xff0c;521&#xff0c;1889}中查找数字8&#xff0c;如果有&#xff…

31 | 独角兽企业数据分析

独角兽企业:是投资行业尤其是风险投资业的术语,一般指成立时间不超过10年、估值超过10亿美元的未上市创业公司。 项目目的: 1.通过对独角兽企业进行全面地分析(地域,投资方,年份,行业等),便于做商业上的战略决策 项目数据源介绍 1.数据源:本项目采用的数据源是近…

智能质检技术的核心环节:语音识别和自然语言处理

随着呼叫中心行业的快速发展和客户服务需求的不断提高&#xff0c;越来越多的企业开始采用智能质检技术&#xff0c;以提高呼叫中心的质量和效率。而在智能质检技术中&#xff0c;语音识别和自然语言处理是其核心环节&#xff0c;对于提高质检的准确性和效率具有重要作用。 语音…

uniapp使用阿里矢量库

然后解压复制全部到你的项目文件 最后只要这几个 然后引入 最后在你需要的页面使用

使用罗技鼠标后 弹出当前页面的脚本发生错误AppData/Local/Temp/LogiUI/Pak/js/jquery-1.3.2.min.js解决

使用的台式机&#xff0c;没有蓝牙驱动&#xff0c;在用logi无线鼠标时&#xff0c;把鼠标连接插入台式机后弹出的如上图所示这个提示&#xff0c;无论是点是/否&#xff0c;还是X掉上图提示&#xff0c;电脑右下角的图依然存在。不习惯这丫的存在。 我重启还是有&#xff0c;然…

MATLAB图论合集(一)基本操作基础

本帖总结一些经典的图论问题&#xff0c;通过MATLAB如何计算答案。近期在复习考研&#xff0c;以此来巩固一下相关知识——虽然考研肯定不能用MATLAB代码哈哈&#xff0c;不过在实际应用中解决问题还是很不错的&#xff0c;比C易上手得多~ 图论中的图&#xff08;Graph&#xf…

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式&#xff08;因为我用pipeline方式一直不执行&#xff0c;不知道为什么&#xff09; 2、创建项目 创建两个参数&#xff0c;一个是宿主端口号&#xff0c;一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…

Kafka:安装和配置

producer&#xff1a;发布消息的对象&#xff0c;称为消息产生者 &#xff08;Kafka topic producer&#xff09; topic&#xff1a;Kafka将消息分门别类&#xff0c;每一个消息称为一个主题&#xff08;topic&#xff09; consumer&#xff1a;订阅消息并处理发布消息的对象…
最新文章