python列表基本运算
列表基本运算
成员运算符 in
老师你在上课喊人回答问题的时候,就犯了难。想点的人名字已经脱口而出了,但发现这位同学没来。
可不,今天的课就来了 8 个人:
students = ['林黛玉', '薛宝钗', '贾元春', '妙玉', '贾惜春', '王熙凤', '秦可卿', '贾宝玉'
]
又到了提问时间,你想喊妙玉和史湘云回答问题,可是总不能每次都在列表里一个一个找,确定她们有没有来吧。
这时,我们的成员运算符 in 就可以派上用场了。之前我们用它来判断指定字符串是否包含某些字符,现在我们用来判断一个元素是否在一个列表中,格式为 元素 in 列表。这是一个布尔表达式,如果元素在列表中,结果为布尔值 True,反之为 False。
那么,我们就来看看妙玉和史湘云在不在今天的上课名单中吧:
miaoyu_in = '妙玉' in students
print(miaoyu_in)
# 输出:Truexiangyun_in = '史湘云' in students
print(xiangyun_in)
# 输出:False
由此我们知道妙玉今天来上课了,史湘云没来,那我们就点妙玉来回答吧。
元素 in 列表 既然是一个布尔表达式,我们就可以结合 if ... else 语句实现很多功能:
if '史湘云' in students:print('请史湘云背诵课文')
else:print('喊其他同学背诵吧')
# 输出:喊其他同学背诵吧
列表的加法
数字之间的加法是我们最熟悉不过的运算了,列表的加法也很简单,就是用 + 号将两个列表的元素放在一起组成一个新列表。
你准备开一次家长会,要喊同学们的家长过来,同学们也要一起参加。于是,贾珍和贾惜春的父亲贾敬,宝玉的父母贾政和王夫人,以及贾琏和贾迎春的父母贾赦和邢夫人要来到课堂。
这次 14 名同学都要到场。 此时 students 列表中有完整的 14 个名字;我们再把参会家长名单储存进 parents 列表中,再将两个列表相加,得到完整的与会列表 meeting。
# 列表的加法
students = ['林黛玉', '薛宝钗', '贾元春', '贾探春', '史湘云', '妙玉', '贾迎春', '贾惜春', '王熙凤', '贾琏', '贾巧姐', '李纨', '秦可卿', '贾宝玉']parents = ['贾敬', '贾政', '王夫人', '贾赦', '邢夫人']meeting = students + parents# 打印 meeting 的结果,以及最终人数
print(meeting)
print('与会人数为', len(meeting), '人')
# 输出:
# ['林黛玉', '薛宝钗', '贾元春', '贾探春', '史湘云', '妙玉', '贾迎春', '贾惜春', '王熙凤', '贾琏', '贾巧姐', '李纨', '秦可卿', '贾宝玉', '贾敬', '贾政', '王夫人', '贾赦', '邢夫人']
# 与会人数为 19 人
这样我们就用加法生成了一个完整的与会名单。要注意用加法生成的列表的元素顺序,在 + 号前的列表元素排在新列表的前面,在 + 后的列表元素在新列表的后面。
列表的乘法
好的,学完列表的加法,我们来学列表的乘法。用 列表 * n,我们可以生成一个元素数目为原列表 n 倍的新列表。
还记得上一关中,期中考试排名最后的四名同学吗?他们是贾探春、秦可卿、贾惜春和贾琏。
为了让他们能赶上其他同学,你决定让他们多花些心思,让他们四个人在接下来的 20 天里,轮流来你办公室背课文。也就是说,四个人在 20 天里要循环 5 次。
我们如何得知后面具体的轮班表?这时可以用乘法,快速生成人名循环出现的轮班表。
# 将拖后腿的四名同学放进列表中
lag_behind = ['贾探春', '秦可卿', '贾惜春', '贾琏']# 用乘法快速生成轮班表
recite_list = lag_behind * 5print(recite_list)
# 输出:['贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏']
看完上面代码的运行结果,我们发现,列表的乘法的定义,和数字的乘法很像:1 * 3 实际上是 1 + 1 + 1 的简写,那么 列表 * 3 就是 列表 + 列表 + 列表 的简写啦。
感觉怎么样,列表的运算是不是很简单呢?经历过列表索引和列表分片的你,掌握列表的运算肯定不在话下~接下来我们就在练习中巩固刚刚学到的知识吧!
课后练习
宝玉和黛玉一起去餐厅吃饭,他俩口味相似,点的菜也差不多。黛玉点了份经典套餐:意面、薯条和南瓜汤。宝玉见了,就和黛玉点了一样的套餐。点完后,又各自点了份饭后甜点:牛油果奶昔和草莓慕思蛋糕。
这样,他们就完成点单了,你能帮他们打印完整的菜单吗?
要求:
- 用列表的加法和乘法对题目代码中的
combo和dessert进行操作,生成总菜单列表menu; - 打印出新列表。
combo = ['意面', '薯条', '南瓜汤'] dessert = ['牛油果奶昔', '草莓慕思蛋糕']# 用加法和乘法组合新列表 menu = combo * 2 + dessert# 将结果打印出来 print(menu)我们说过,列表内的元素是可以修改的,我们使用这个特征,方便地记录同学们不断变动的出勤情况。
不过有些时候,我们希望数据能安全地保存在那里,不会变动。比如上次的期中考试成绩是要长期保存的,我们虽然记录在了列表里,但要是哪天不小心手滑了,进行了“增删改”中的任何一种动作,那就不好办了。有没有什么办法,把列表“锁定”呢?
下一篇,我们就介绍一种和列表很相似的数据类型——元组(tuple),满足我们对数据安全的需求。
相关文章:
python列表基本运算
列表基本运算 成员运算符 in 老师你在上课喊人回答问题的时候,就犯了难。想点的人名字已经脱口而出了,但发现这位同学没来。 可不,今天的课就来了 8 个人: students [林黛玉, 薛宝钗, 贾元春, 妙玉, 贾惜春, 王熙凤, 秦可卿,…...
Pytorch实用教程:pytorch中nn.Linear()用法详解 | 构建多层感知机 | nn.Module的作用 | nn.Sequential的作用
文章目录 1. nn.Linear()用法构造函数参数示例使用场景2. 构建多层感知机步骤代码示例注意事项3. 继承自nn.Module的作用是什么?1. 组织网络结构2. 参数管理3. 模型保存和加载4. 设备管理不继承 `nn.Module` 的后果...
如何利用unicloud阿里云云函数实现文件包括图片或文件上传,unicloud云函数写法一览
这里以一个单文件上传为例子,多图多文件同理,循环单图处理逻辑即可。 背景 前端vue上传图片文件(base64格式)到服务器,并获取返回的服务器资源存储路径 传入参数 { ”queryStringParameters“:{ "file":&qu…...
Django序列化器中is_valid和validate
今天上班的时候分配了一个任务,是修复前端的一个提示优化,如下图所示: 按照以往的经验我以为可以直接在validate上进行校验,如何抛出一个异常即可 ,例如: class CcmSerializer(serializers.ModelSerialize…...
关于Golang中自定义包的简单使用-Go Mod
1. go env 查看 GO111MODULE 是否为 on,不是修改成on go env -w GO111MODULEon 2 .自定义包的目录格式 3. test.go 内容 package calc func Add(x, y int) int { // 首字母大写表示公有方法return x y }func Sub(x, y int) int {return x - y } 4.生成calc目…...
Dijkstra求最短路篇二(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)
前言: Dijkstra算法博客讲解分为两篇讲解,这两篇博客对所有有难点的问题都会讲解,小白也能很好理解。看完这两篇博客后保证收获满满。 第一篇博客讲解朴素Dijkstra算法Dijkstra求最短路篇一(全网最详细讲解两种方法,适合小白)(p…...
Dijkstra求最短路篇一(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)
前言: Dijkstra算法博客讲解分为两篇讲解,这两篇博客对所有有难点的问题都会讲解,小白也能很好理解。看完这两篇博客后保证收获满满。 本篇博客讲解朴素Dijkstra算法,第二篇博客讲解堆优化Dijkstra算法Dijkstra求最短路篇二(全网…...
计算机组成原理06:浮点数运算
浮点数加减运算 之前我们提到过,浮点数具有特定的表示形式。因此,在进行浮点数的加减运算之前,需要统一浮点数的表达方式。这里我们主要对浮点数表示中的尾数M进行处理,要求0≤M<1,统一格式如下: 正数…...
opencascade 快速显示AIS_ConnectedInteractive源码学习
AIS_ConcentricRelation typedef PrsDim_ConcentricRelation AIS_ConcentricRelation AIS_ConnectedInteractive 简介 创建一个任意位置的另一个交互对象实例作为参考。这允许您使用连接的交互对象,而无需重新计算其表示、选择或图形结构。这些属性是从您的参考对…...
CentOS系统上安装单机版Redis教程
一、前言 1.1 为什么选择Redis? Redis不仅支持丰富的数据类型(如字符串、哈希、列表、集合、有序集合等),还具有高性能、持久化、发布订阅、事务和Lua脚本等特点。这些优势使其成为分布式系统和高并发应用中的首选。 1.2 为什么…...
纯Java实现Google地图的KMZ和KML文件的解析
目录 前言 一、关于KMZ和KML 1、KMZ是什么 2、KML是什么 二、Java解析实例 1、POM.xml引用 2、KML 基类定义 3、空间对象的定义 4、Kml解析工具类 三、KML文件的解析 1、KML解析测试 2、KMZ解析测试 四、总结 前言 今天是六.一儿童节,在这里祝各位大朋友…...
k8s自定义资源你会创建吗
创建自定义资源定义 CustomResourceDefinition 当你创建新的 CustomResourceDefinition(CRD)时,Kubernetes API 服务器会为你所 指定的每一个版本生成一个 RESTful 的 资源路径。CRD 可以是名字空间作用域的,也可以是集群作用域的…...
CATIA二次开发VBA入门(4)——进程外开发环境搭建,vb.net在Visual Studio中开发,创建圆柱曲面的宏录制到二次开发案例
目录 引出vb.net和vb6.0 进程外开发环境搭建vb.net开发环境搭建《CATIA二次开发技术基础》模板 添加宏库引用 vs开发环境初步vs中的立即窗口对象浏览器 建立模板案例:创建一堆圆柱曲面第一步:录制宏第二步:代码精简第三步:for循环…...
c++字符串相关接口
c字符串相关接口 1.str2wstr(str转换wstr)2.wstr2str(str转换wstr)3.Utf8ToAsi(Utf8转换ANSI)4.AsiToUtf8(ANSI转换Utf8)5.stringformatA/stringformatW(按照指定的格式格式化字符串)6.GetStringBetween(获取cStart cEnd之间的字符串)7.Char2Int(char转int)8.Str2Bin(字符串转换…...
Maven打包错误:无效的源发行版:17
1. 报错问题 在用maven进行打包时(clean & install),报如下错误: 一开始让我很摸不着头脑,我确定我的pom.xml,还有IDEA中的Project Settings是正确的。 2. 排查 尽管确定,但还是一个个排…...
【环境栏Composer】Composer常见问题(持续更新)
1、执行composer install提示当前目录中没有 composer.lock 文件时 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Composer 在执行 install 命令时会…...
塑造更智慧的AI:策略与路径探索
提升数据质量: 数据清洗:去除数据中的异常值、缺失值、噪声等干扰因素,确保数据的准确性和一致性。数据标注:为数据集提供准确的标签,以便进行有监督学习。标注的质量直接影响模型的性能。数据增强:通过图像…...
软设之快速排序
快速排序是冒泡排序的改进算法 它采用的是分治法,基本思想是把原问题分解为若干规模更小但结构与原问题相似的子问题,通过递归解决这些子问题,然后将这些子问题的解组合成原问题的解。 它的步骤是 1.在待排序的n个记录中任取一个记录&…...
从零学算法2965
2965. 找出缺失和重复的数字 给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个…...
【Mac版】Java生成二维码
软件版本 IntelliJ IDEA:2023.2 JDK:17 Tomcat:10.1.11 Maven:3.9.3 技术栈 servlet谷歌的:zxing 生成普通的黑白二维码在二维码中间添加一个小图标 github开源项目:qrcode qrcode开源项目的内部是基于z…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
