• python列表基本运算


    列表基本运算

    成员运算符 in

    老师你在上课喊人回答问题的时候,就犯了难。想点的人名字已经脱口而出了,但发现这位同学没来。

    可不,今天的课就来了 8 个人:

    1. students = [
    2. '林黛玉', '薛宝钗', '贾元春', '妙玉', '贾惜春', '王熙凤', '秦可卿', '贾宝玉'
    3. ]

    又到了提问时间,你想喊妙玉和史湘云回答问题,可是总不能每次都在列表里一个一个找,确定她们有没有来吧。

    这时,我们的成员运算符 in 就可以派上用场了。之前我们用它来判断指定字符串是否包含某些字符,现在我们用来判断一个元素是否在一个列表中,格式为 元素 in 列表。这是一个布尔表达式,如果元素在列表中,结果为布尔值 True,反之为 False

    那么,我们就来看看妙玉和史湘云在不在今天的上课名单中吧:

    1. miaoyu_in = '妙玉' in students
    2. print(miaoyu_in)
    3. # 输出:True
    4. xiangyun_in = '史湘云' in students
    5. print(xiangyun_in)
    6. # 输出:False

    由此我们知道妙玉今天来上课了,史湘云没来,那我们就点妙玉来回答吧。

    元素 in 列表 既然是一个布尔表达式,我们就可以结合 if ... else 语句实现很多功能:

    1. if '史湘云' in students:
    2. print('请史湘云背诵课文')
    3. else:
    4. print('喊其他同学背诵吧')
    5. # 输出:喊其他同学背诵吧

    列表的加法

    数字之间的加法是我们最熟悉不过的运算了,列表的加法也很简单,就是用 + 号将两个列表的元素放在一起组成一个新列表。

    你准备开一次家长会,要喊同学们的家长过来,同学们也要一起参加。于是,贾珍和贾惜春的父亲贾敬,宝玉的父母贾政和王夫人,以及贾琏和贾迎春的父母贾赦和邢夫人要来到课堂。

    这次 14 名同学都要到场。 此时 students 列表中有完整的 14 个名字;我们再把参会家长名单储存进 parents 列表中,再将两个列表相加,得到完整的与会列表 meeting

    1. # 列表的加法
    2. students = ['林黛玉', '薛宝钗', '贾元春', '贾探春', '史湘云', '妙玉', '贾迎春', '贾惜春', '王熙凤', '贾琏', '贾巧姐', '李纨', '秦可卿', '贾宝玉']
    3. parents = ['贾敬', '贾政', '王夫人', '贾赦', '邢夫人']
    4. meeting = students + parents
    5. # 打印 meeting 的结果,以及最终人数
    6. print(meeting)
    7. print('与会人数为', len(meeting), '人')
    8. # 输出:
    9. # ['林黛玉', '薛宝钗', '贾元春', '贾探春', '史湘云', '妙玉', '贾迎春', '贾惜春', '王熙凤', '贾琏', '贾巧姐', '李纨', '秦可卿', '贾宝玉', '贾敬', '贾政', '王夫人', '贾赦', '邢夫人']
    10. # 与会人数为 19 人

    这样我们就用加法生成了一个完整的与会名单。要注意用加法生成的列表的元素顺序,在 + 号前的列表元素排在新列表的前面,在 + 后的列表元素在新列表的后面。

    列表的乘法

    好的,学完列表的加法,我们来学列表的乘法。用 列表 * n,我们可以生成一个元素数目为原列表 n 倍的新列表。

    还记得上一关中,期中考试排名最后的四名同学吗?他们是贾探春、秦可卿、贾惜春和贾琏。

    为了让他们能赶上其他同学,你决定让他们多花些心思,让他们四个人在接下来的 20 天里,轮流来你办公室背课文。也就是说,四个人在 20 天里要循环 5 次。

    我们如何得知后面具体的轮班表?这时可以用乘法,快速生成人名循环出现的轮班表。

    1. # 将拖后腿的四名同学放进列表中
    2. lag_behind = ['贾探春', '秦可卿', '贾惜春', '贾琏']
    3. # 用乘法快速生成轮班表
    4. recite_list = lag_behind * 5
    5. print(recite_list)
    6. # 输出:['贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏', '贾探春', '秦可卿', '贾惜春', '贾琏']

    看完上面代码的运行结果,我们发现,列表的乘法的定义,和数字的乘法很像:1 * 3 实际上是 1 + 1 + 1 的简写,那么 列表 * 3 就是 列表 + 列表 + 列表 的简写啦。

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

    课后练习

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

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

    要求:

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

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

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

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

  • 相关阅读:
    现在产品经理已经开始泛滥了吗?
    设计模式_单例模式(C++)
    Windows 下载编译chromium源码
    Hive DML常见操作
    uni-app云打包(安卓)及push模块添加
    mysql 的语法(1)
    fpga图像处理------常用算法(二)
    前端面试常见手写题
    【linux问题记录】
    公众号网页开发 - 本地开发环境中将公众号授权域名使用内网穿透(frp+nginx)进行本地开发、调试
  • 原文地址:https://blog.csdn.net/qq_31667253/article/details/139350749