42. Python range函数—生成器函数

news2024/11/14 17:48:08

42. range函数—生成器函数

文章目录

  • 42. range函数—生成器函数
    • 1. 什么是range( )函数
    • 2. 回顾列表切片的语法
    • 3. range( )函数的语法
    • 3. range函数实操
      • 3.1 只有1个参数
      • 3.2 有2个参数
      • 3.3 有3个参数
      • 3.4 步长为负数
    • 4. list不能完全替代range
    • 5. 总结

1. 什么是range( )函数

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

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

range( )函数:Python中的生成器函数。

range( )函数在Python中的作用是生成一个新的range对象。

【温馨提示】

什么是生成器函数、什么是对象就是Python中的一个概念,就是一个定义,初学不用过多纠结。

初学者重点掌握range函数的语法即可。

什么是对象,后面的内容会讲。

2. 回顾列表切片的语法

列表[star:end:step]

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

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

  1. 列表名。

  2. 英文中括号。

  3. 3个参数。

  4. 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( )函数的语法

【列表切片和range函数的区别】

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

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

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

列表[star:end:step]

range(star,end,step)

【range( )函数的语法如下】

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

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

  1. 函数名:range

  2. 英文小括号:( )

  3. 3个参数

  4. 3个参数之间用英文逗号,分隔

在这里插入图片描述

【参数说明】

  1. 参数start:表示起始的整数(包含该整数),如果不指定,则默认为0

  2. 参数end:表示结束的整数(不包含该整数),不能省略。

  3. 参数step:表示步长,即两个数之间的间隔。如果省略,则默认为1,当省略该步长时,最后一个英文逗号也可以省略。

【重点提示】

切片和range函数都包括开始字符,不包括结束字符,简单记忆为含前不含后

【返回值】

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

我们可以利用list函数将range对象转换成列表。

我们可以利用tuple函数将range对象转换成元组。

【温馨提示】

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

3. range函数实操

3.1 只有1个参数

# 创建一个range 函数,将结果赋值给变量r
r = range(3)

# 输出r 
print(r)

# 用type函数查看r的数据类型
print(type(r))

# 用list函数将range对象转换为列表
print(list(r))

# 用tuple函数将range对象转换为元组
print(tuple(r))

【终端输出】

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

【range(3)代码解析】

这里只有1个参数3

只有1个参数表示从整数0开始,步长为1。

start=0

end=3

step=1,即步长为1

在这里插入图片描述

【代码解析:返回值】

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

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

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

数列的公差就是步长。

3.2 有2个参数

# 创建一个range 函数,将结果赋值给变量r
r = range(2,5)

# 输出r 
print(r)

# 用type函数查看r的数据类型
print(type(r))

# 用list函数将range对象转换为列表
print(list(r))

【终端输出】

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

【range(2,5)代码解析】

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

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

step=1,步长为1。

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

3.3 有3个参数

# 创建一个range 函数,将结果赋值给变量r
r = range(2,11,3)

# 输出r 
print(r)

# 用type函数查看r的数据类型
print(type(r))

# 用list函数将range对象转换为列表
print(list(r))

【终端输出】

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

【range(2,11,3)代码解析】

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三个数。

3.4 步长为负数

# 创建一个range 函数,将结果赋值给变量r
r = range(15,0,-5)

# 输出r 
print(r)

# 用type函数查看r的数据类型
print(type(r))

# 用list函数将range对象转换为列表
print(list(r))

【终端输出】

range(15, 0, -5)
<class 'range'>
[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三个数。

4. 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个参数就可以完成。

5. 总结

在这里插入图片描述

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

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

相关文章

基于遗传算法在机器人路径规划中的应用研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

第十七章 优先队列优化Dijkstra算法

第十七章 优先队列优化Dijkstra算法一、普通dijkstra算法的缺陷1、选出最小距离的过程&#xff1a;2、松弛所有点的过程&#xff1a;二、如何优化1、代码模板&#xff08;1&#xff09;问题&#xff1a;&#xff08;2&#xff09;模板&#xff1a;2、详细解读三、优化分析1、使…

5G赋能行业应用,助推数智化转型!

导语 | 5G 技术的蓬勃发展推动其行业应用的巨轮乘风破浪、扬帆启航&#xff0c;5G 技术不断落地布局于各行各业&#xff0c;基础建设也不断完善&#xff0c;5G to B 的时代已经到来。此次&#xff0c;我们邀请到了中国电信研究院工业互联网技术研发部主任、腾讯云 TVP 谭华老师…

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2014:TATEC

【paper】 Effective Blending of Two and Three-way Interactions for Modeling Multi-relational Data 【简介】 本文是法国 Antoine Bordes 团队发表在 ECML-PKDD 2014 上的工作&#xff0c;提出了 TATEC&#xff08;Two and Three-way Embeddings Combination&#xff09;…

ERP+MES集成管理系统重要性有哪些?

随着企业信息化观念的提升&#xff0c;管理方式也愈来愈信息化&#xff0c;因此以信息化推动企业的不断发展趋势已变成企业存活和发展的主要核心理念。其中E&#xff32;P 系统和 MES 系统在企业发展和改革中起着非常重要的作用。当各种信息化系统在企业内各个部门顺利执行的同…

RabbitMQ安装教程(超详细)

本教程是在centos8下试验的&#xff0c;其实linux系统的都差不多 RabbitMQ官方&#xff1a;Messaging that just works — RabbitMQ RabbitMQ是开源AMQP实现&#xff0c;服务器端用Erlang语言编写&#xff0c;Python、Ruby、 NET、Java、JMS、c、PHP、action screcrive AMQP …

python 爬虫入门该怎么学习?

前言 1、什么是爬虫和爬虫的基本逻辑 “爬虫”是一种形象的说法。互联网比喻成一张大网&#xff0c;爬虫是一个程序或脚本在这种大网上爬走。碰到虫子&#xff08;资源&#xff09;&#xff0c;若是所需的资源就获取或下载下来。这个资源通常是网页、文件等等。可以通过该资源…

Android NDK 开发之 CMake 必知必会

Android Studio 从 2.2 版本起开始支持 CMake ,可以通过 CMake 和 NDK 将 C/C 代码编译成底层的库&#xff0c;然后再配合 Gradle 的编译将库打包到 APK 中。 这意味就不需要再编写 .mk 文件来编译 so 动态库了。 CMake 是一个跨平台构建系统&#xff0c;在 Android Studio 引…

12月7日 补充数据库链式操作,只生成sql语句,不执行sql的几种函数以及thinkphp中验证器

补充知识&#xff1a; 生成sql语句但是不会执行sql语句 public function fetchSqlTest(){$result Db::name(user)->fetchSql(true)->select();//dump($result);//使用正常select查询默认中select(true&#xff09;改为false即可返回sql语句$result Db::name(user)->…

UNIX/LINUX操作系统内核结构

通用操作系统的现状和分类 UNIX操作系统的根本特点&#xff1a;分时多用户、开放性 基本功能特征 系统结构 操作系统核心 系统调用的集合及实现系统调用的内部算法就形成操作系统核心 系统调用 以函数形式提供给核外的命令和上层应用系统使用的一组程序&#xff0c;涵…

观察者模式

目录 一、观察者模式解决了哪些问题&#xff1a; 二、体检的小栗子 三、什么是观察者模式 四、代码实现 一、观察者模式解决了哪些问题&#xff1a; 对象之间的一对多依赖关系应该在不使对象紧密耦合的情况下定义。应该确保当一个对象改变状态时&#xff0c;自动更新无限数…

5-5:显示系统的通知

通知列表 显示评论、点赞、关注三种类型的通知。 通知详情 分页显示某一类主题所包含的通知。 未读消息 在页面头部显示所有的未读消息数量 通知存在message表里面 修改MessageMapper.java package com.nowcoder.community.dao;import com.nowcoder.community.entity.Messa…

毕业2年,跳槽到我们公司拿18K,这就是00后卷王带来的压迫感吗?

内卷&#xff0c;是现在热度非常高的一个词汇&#xff0c;随着热度不断攀升&#xff0c;隐隐到了“万物皆可卷”的程度。 在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不…

AI 也会写代码了,但我并不担心

如果你比较关注人工智能&#xff0c;可能会注意到最近圈子的人都在刷屏一个 AI 玩意&#xff0c;叫 ChatGPT 。我一直关注的和菜头在他的公众号槽边往事上就接连写了几篇文章。为什么和菜头是男的&#xff0c;读者却要叫他“婶婶”怎么把AI逼到生气水文与干货如果看完上面的第一…

一行代码 网页变灰

背景 想必大家都感受到了&#xff0c;很多网站、APP 在昨天都变灰了。 先来感受一下变灰后的效果。 让网页变为黑白配色&#xff0c;是个常见的诉求。而且往往是突如其来的诉求&#xff0c;是无法预知的。 当发生这样的需求时&#xff0c;我们需要迅速完成变更发布。 这种…

机器学习 决策树 随机森林

文章目录参考决策树指标基尼系数基础公式公式理解引入划分后的公式划分后公式的理解信息熵、信息增益如何理解信息熵两种指标的对比总结参考 b站视频 【决策树、随机森林】附源码&#xff01;&#xff01;超级简单&#xff0c;同济大佬手把手带你学决策树决策树模型及案例&…

收藏 外贸企业必备的跨境电商B2B出口报关完整指南

跨境企业想要将货物出口到国外&#xff0c;报关是重要步骤之一&#xff0c;它是货物合法进出国境的通行证。许多初入跨境电商行业的B2B企业在报关上由于无人指引走了许多弯路&#xff0c;浪费了时间。 一.跨境出口模式 根据海关总署规定&#xff0c;跨境电商出口的监管模式分为…

QDataStream(数据流)

QDataStream类实现将QIODevice的二进制数据串行化。一个数据流就是一个二进制编码信息流&#xff0c;独立于主机的操作系统&#xff0c;CPU或字节顺序。QDataStream可以实现c的基本数据类型的串行化。 构造函数&#xff1a; 常用函数 &#xff1a; atEnd()是否到达结束位置re…

基于jsp+ssm的旅游活动报名系统-计算机毕业设计

项目介绍 本系统主要采JSP语言进行编写&#xff0c;本系统数据库采用数据处理功能强大的MySQL来建立 管理员可以通过结伴休闲平台进行旅行社管理、个人活动管理、旅行社活动管理、客户管理、用户管理等。个人用户则可通过结伴休闲平台对进行发布活动、结伴活动等。旅行社用户…

STC15 - ExternalRAM_enable()/InternalRAM_enable()

文章目录STC15 - ExternalRAM_enable()/InternalRAM_enable()概述实验环境MCU的规格区别IAP15F2K61S2的使用限制实验的组合公用测试代码1. 没有焊接外部RAM ExternalRAM_enable()2. 没有焊接外部RAM InternalRAM_enable()3. 焊接外部RAM ExternalRAM_enable()4. 焊接外部RAM…