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 就是 列表 + 列表 + 列表 的简写啦。

感觉怎么样,列表的运算是不是很简单呢?经历过列表索引和列表分片的你,掌握列表的运算肯定不在话下~接下来我们就在练习中巩固刚刚学到的知识吧!

课后练习

宝玉和黛玉一起去餐厅吃饭,他俩口味相似,点的菜也差不多。黛玉点了份经典套餐:意面、薯条和南瓜汤。宝玉见了,就和黛玉点了一样的套餐。点完后,又各自点了份饭后甜点:牛油果奶昔和草莓慕思蛋糕。

这样,他们就完成点单了,你能帮他们打印完整的菜单吗?

要求:

  1. 用列表的加法和乘法对题目代码中的 combo 和 dessert 进行操作,生成总菜单列表 menu
  2. 打印出新列表。
    combo = ['意面', '薯条', '南瓜汤']
    dessert = ['牛油果奶昔', '草莓慕思蛋糕']# 用加法和乘法组合新列表
    menu = combo * 2 + dessert# 将结果打印出来
    print(menu)

    我们说过,列表内的元素是可以修改的,我们使用这个特征,方便地记录同学们不断变动的出勤情况。

    不过有些时候,我们希望数据能安全地保存在那里,不会变动。比如上次的期中考试成绩是要长期保存的,我们虽然记录在了列表里,但要是哪天不小心手滑了,进行了“增删改”中的任何一种动作,那就不好办了。有没有什么办法,把列表“锁定”呢?

    下一篇,我们就介绍一种和列表很相似的数据类型——元组(tuple),满足我们对数据安全的需求。

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

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

相关文章

云WAF的负载均衡和流量分发功能

云WAF(Web Application Firewall)是一种专门设计来保护Web应用免受网络攻击的网络安全设备。它通过监控、过滤和阻止HTTP流量中的恶意攻击,确保Web应用的安全和可用性。云WAF的负载均衡和流量分发功能是其重要的特性之一,这些功能…

VS2022+QT5.15.2+MySQL8.4大集合

网上的教程都建议用Qt5,不要用6,不死心的尝试了整整一天失败了,乖乖用回5,qt5需要编译一下生成mysql的动态和静态库 1. mysql8.4安装 下载社区开发版,注意要64位 https://dev.mysql.com/downloads/mysql/ 配置一下数…

安卓SystemServer进程详解

目录 一、概述二、源码分析2.1 SystemServer fork流程分析2.1.1 [ZygoteInit.java] main()2.1.2 [ZygoteInit.java] forkSystemServer()2.1.3 [Zygote.java] forkSystemServer()2.1.4 [com_android_internal_os_Zygote.cpp]2.1.5 [com_android_internal_os_Zygote.cpp] ForkCom…

CANDela studio基础使用

ECU Information 可以修改ECU的名称 里面有个Supported Interfaces,可以在CDDT里面选择支持的通讯接口 可以在tools下面新建internface,也可以从其他CDDT文件里面复制过来,复制的时候注意要另外将里面的参数再复制一次。 也可以在这里点击新…

HTML与Python语法:深度探索与实用指南

HTML与Python语法:深度探索与实用指南 在编程领域,HTML和Python是两个截然不同的语言,各自在Web开发和数据分析等领域发挥着关键作用。然而,当这两者结合时,可以产生强大的效果。本文将分别从四个方面、五个方面、六个…

JavaScript基础知识2(常量、数据类型、类型转换、算术运算符优先级)

JavaScript基础知识2(常量、数据类型、类型转换、算术运算符优先级) 常量数据类型数值类型字符串类型模板字符串基本用法你的例子改写成模板字符串详细解释完整示例(使用模板字符串) 布尔类型undefined获取数据类型使用 typeof返回…

倪师哲学。能让我好,我就接受

还有有些人更搞笑的是,把自己的行为啊,建立在别人的基础之上,如果那个人么样对我,我肯定能怎么样对这个人。 生而为人呐,你是一个独立的人,不要去总是拿着各种各样的前提,来限制了自己个人的成长…

Python 时间戳转时间

一、 10 位 时间戳 ,秒级 转换为时间 方式一: import timetimeStamp 1717149862 timeArray time.localtime(timeStamp) timeStr time.strftime("%Y-%m-%d %H:%M:%S", timeArray) print(timeStr) 输出: 2024-05-31 18:04:22方式二&#xf…

打造你的专属Vue组件:超实用“手机号、邮箱、身份证号加密显示组件“实战

随着Web应用程序的发展,我们经常需要处理用户敏感信息,如手机号码和身份证号码。为了保护用户隐私,我们需要在前端对这些信息进行加密处理,以避免直接暴露在页面上。在这篇博客中,我们将介绍如何使用Vue 3.0单文件组件…

CATO原理中的数学与魔术(十一)——Parity Principle及其应用二:集合的可视化...

早点关注我,精彩不错过! 上篇文章中,我们已经进入了CATO原理魔术介绍的深水区,是第3个系列Parity Principle中集合性质的章节,聊到了关于张数和求和集合性质,并对性质之间的偏序关系,性质之间的…

USB - Linux Drivers介绍

在 Linux 中,USB 驱动程序子系统负责管理 USB 设备与操作系统之间的通信。下面概述了 Linux 中 USB 驱动程序子系统的组件和功能: USB 核心: USB 内核是 USB 驱动程序子系统的核心,它为 USB 通信提供了基本的基础设施。它负责设备…

three.js官方案例(animation / keyframes)webgl_animation_keyframes.html学习

目录 ​编辑 1 PMREMenerator 1.1 构造函数 1.2 fromScene方法 2 AnimationMixer 3 animal1.html全部 4 animal1.js全部 1 PMREMenerator 此类生成预过滤的 Mipmapped 辐射环境贴图 (PMREM) 来自 cubeMap 环境纹理。这允许不同的级别 的模糊&…

GPTQ 量化大模型

GPTQ 量化大模型 GPTQ 算法 GPTQ 算法由 Frantar 等人 (2023) 提出,它从 OBQ 方法中汲取灵感,但进行了重大改进,可以将其扩展到(非常)大型的语言模型。 步骤 1:任意顺序量化 OBQ 方法选择权重按特定顺序…

桶形畸变和枕形畸变

桶形畸变和枕形畸变是两种常见的光学畸变现象,主要发生在使用广角镜头或远摄镜头拍摄时。这些畸变是因为镜头的光学特性不能完美地将光线汇聚到一个共同的焦点上,导致图像的不同部分在形状上发生扭曲。下面分别对这两种畸变进行详细描述: 桶…

快手万合通脚本,磁力广告挂机变现项目,号称单窗口日收益10+(教程+软件)

在这个项目中,我们采用一种简便的方法来获取额外收入。比如: 1. 主账号准备:首先,确保拥有一个已开通磁力万合功能的快手主账号。账号需拥有至少一万粉丝,以确保广告收益。 2. 创建快手小号:无需粉丝基础…

每日一题《leetcode--LCR 021.删除链表的倒数第N个结点》

https://leetcode.cn/problems/SLwz0R/ 这道题我们可以设一个哨兵位,然后把要遍历链表的结点指向该哨兵位。最后用for循环将指针指向要删除结点的前一个。 struct ListNode* removeNthFromEnd(struct ListNode* head, int n){struct ListNode* dummy malloc(sizeof…

什么是成就动机?如何判断人的成就动机?

什么是成就动机? 成就动机指的是一个人追求成就的心理,对成就(成绩,目标)的渴望心理,成就动机促进我们实现个人价值,完成工作当中的任务,始终被成就动机驱使的人往往懂得吃苦耐劳&a…

通过强化学习策略进行特征选择

特征选择是构建机器学习模型过程中的决定性步骤。为模型和我们想要完成的任务选择好的特征,可以提高性能。 如果我们处理的是高维数据集,那么选择特征就显得尤为重要。它使模型能够更快更好地学习。我们的想法是找到最优数量的特征和最有意义的特征。 …

Spring概念学习

概述 在此记录spring的学习内容。 概念 从前,在Java的大森林中,有一片神奇的土地,名叫"Spring"。这片土地上生长着各种美丽而强大的植物,它们分别象征着Spring框架中的各种功能和特性。 在这片土地上,有…

wampserver安装与汉化

wampserver安装与汉化 文章目录 wampserver安装与汉化一、安装二、汉化1.升级软件并安装补丁 介绍: WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更…