第六节 容器(列表)

news2024/11/25 19:31:09

文章目录

  • 列表掌握知识点
    • 1.1 概述
      • 1.1.1 语法格式
    • 1.2 列表的循环遍历
      • 1.2.1 for 循环遍历列表
      • 1.2.2 while 循环遍历列表
    • 1.3 列表的常见操作
      • 1.3.1 列表增加元素
      • 1.3.2 列表删除元素
      • 1.3.3 列表查询元素
    • 1.4 列表的排序
    • 1.5 列表的嵌套
    • 1.6 练习 随机分班
    • 1.7 练习 判断字符结尾
    • 1.8 扩展: 知识点快速查找

列表掌握知识点

  • 什么是列表
  • 列表的长度、最大索引
  • 列表的遍历
  • 列表的常见操作
  • 掌握列表的嵌套使用

1.1 概述

  1. 在Python中,列表是一种 有序的容器,用于存储一组任意类型的数据。
  2. 列表是可变的,意味着可以在列表中 添加、删除和修改元素,同时也可以对列表中的元素进行排序、搜索和迭代。
  3. 但是不建议列表中存储多种类型元素, 不方便管理.

1.1.1 语法格式

  1. 假设存储1000个学生, 这就需要定义1000个变量. 那该怎么办?

    • 所以, 列表出现可以解决上述问题. 创建列表的方式如下:
    • 定义列表 使用 [] 需要用逗号进行隔离 ,元素与元素
    #1语法格式  [] 中括号
    #1.1 里面可以存储不同的元素
    list_1 =[]
    list =["字符串",10,3.14,True]
    print(list_1) # [] 空列表
    print(type(list)) #查看类型 <class 'list'>
    
    
  2. 使用索引获取元素

    • 列表有序,有下标索引.
    • 从0开始 . 最大索引, 列表长度-1.
    • 修改,列表 中的值, 列表变量[ 索引 ]= 值
    #2.列表有下标索引
    #2.1 列表的长度 len(列表名), 最大索引是 len(列表名)-1,即 :长度-1
    list_2 =["字符串",10,3.14,True]
    
    # IndexError: list index out of range
    #print(list_2[4]) #2.2 索引如果为4 就会报错.
    print(len(list_2)) #列表长度
    print(list_2[3]) #最大索引就是 长度-1
    
    #2.3 修改列表值
    list_2[3] =False #修改为False
    print(list_2)
    

在这里插入图片描述

1.2 列表的循环遍历

  1. 为了能更有效的 访问列表 中的每个数据,我们可以使用循环进行遍历.
    • for 循环 和 while 循环.

1.2.1 for 循环遍历列表

  1. 如果是可迭代的, 可以直接遍历

    # for循环遍历
    # 1.如果是可以迭代的就直接遍历.
    for i in "hello":
        print(i)  # 将每个字符输出
    
    #2. 通过遍历进行输出
    list_1 = ['aa', 'bbb', 'angelbaby', 'e']
    for i in list_1:
        #print(i)
        #获取每一个字符的长度
        print(len(i),end=" ")
    
  2. for 循环的第二种写法.(不要求掌握,了解即可)

    # range()是包左不包右的.  range(0,len(list_1))  [0,最大索引)
    for j in range(len(list_1)): #前面的0可以省略
        print(list_1[j])
    

1.2.2 while 循环遍历列表

  1. 遍历列表还有其他的方式.
    • 列表名[ 索引 ]
    • 列表最大索引 长度-1
    # 1.可以通过列表名[索引] 的方式进行遍历.
    list_1 = ['aa', 'bbb', 'angelBaby', 'e']
    print(list_1[0])
    print(list_1[1])
    print(list_1[2])
    print(list_1[3])
    
    # 列表的长度
    print(f"列表的长度 : {len(list_1)}")
    # 2. 所以只要拿到 索引就能变量
    print("*" * 20)
    i = 0
    while i < len(list_1):
        print(list_1[i])
        i += 1
    
    

1.3 列表的常见操作

1.3.1 列表增加元素

  1. 向列表中 添加元素方式有很多.
    • 通过append() 方法, 向列表中添加元素
    • 通过 extend() 方法通过遍历插入列表.
    • 通过 insert(index,object) 方法在指定位置 index前插入元素 object.
    # 创建列表
    list_1 = ['aa', 'bb', 'cc', 'dd']
    print(f"原列表数据 {list_1}")
    
    
    #1.往列表中添加元素 append
    list_1.append("ee")
    print(list_1)
    
    #2.指定下标添加元素  insert(索引,元素)
    list_1.insert(3,"ff") #该位置元素后移.
    print(list_1)
    
    #3.使用extend 方法向列表添加元素,相当于遍历后插入列表中.
    list_1.extend("hello")
    print(list_1) #['aa', 'bb', 'cc', 'ff', 'dd', 'ee', 'h', 'e', 'l', 'l', 'o']
    
    #3.1 也可以将列表遍历后插入
    list_1.extend(["mm","nn"])
    print(list_1)
    

1.3.2 列表删除元素

  1. 在列表中的删除有三种方法
    • del 列表名[下标] 删除,可以 删除指定列表元素
    • remove() , 可以删除指定的元素, 根据元素进行删除.
    • pop() 方法删除, 根据索引 删除, 只能删除1 个
      • 如果 不写索引 , 默认删除最后一个.
    • 清空列表中的数据 clean()
    #删除的几种方式
    #1. 使用del进行删除 del 列表名[索引]
    #2. 使用pop进行删除 列表名.pop[索引]
    #3. 使用remove删除  列表名.remove[值]
    #4. 扩展使用 clean 清空
    
    #新建列表
    list_1 = ["a","b","c","d","e"]
    
    #1.1 进行删除操作 语法格式 del 列表名[索引]
    del list_1[2] #将索引2下的元素进行删除.
    
    #2.1 pop 语法格式删除
    
    list_1.pop() #如果不传递参数,默认删除最后一个. e
    
    list_1.pop(1) #只能根据索引进行删除
    
    
    #3.1 使用remove删除 语法格式 列表名.remove[value值]
    
    list_1.remove("d") #需要传入具体的值.
    
    #4. 清空所有
    list_1.clear() #清空列表中所有元素
    
    #打印输出
    print(list_1)
    

1.3.3 列表查询元素

  1. index() 方法用于查询列表中某个元素的索引.

    • 如果该元素存在于列表中,则返回该元素的第一个索引。
    • 可以根据元素值进行查找, 或者根据 区间范围查找,
    • 找到就返回第一个找到元素的下标 , 没有就异常
    #1. 通过列表名称和索引的方式
    #语法格式: 列表名[索引]
    print(list_1[1])
    print(list_1[len(list_1)-1]) #最大索引
    
    #2. 通过index方式, 找到了就返回下标,没有找到就报错!
    # 语法格式: index(value)
    # 语法格式: index(value,start, end)
    print(list_1.index("aa"))
    print(list_1.index("aa",3,7))
    
  2. count() 方法用于计算列表中某个元素出现的次数

    • 如果该元素不存在于列表中,则 返回 0
    	# 1.1 创建列表
    	list_1 = ["aa", "bb", "cc", "aa", "ee", "ff", "aa"]
    	
    	# 3. count(),统计出现的次数,有就返回出现次数,没有就返回0
    	print(list_1.count("aa"))
    
  3. in 或者 not in 使用查询,

    • 判断是否存在, 存在就返回 True ,不存在返回False ,
    • 一般和 if 结合使用
    	# 1.1 创建列表
    	list_1 = ["aa", "bb", "cc", "aa", "ee", "ff", "aa"]
    	# 3.1 同in 或者 not in进行判断,有则True 或 False
    	resault = "aa" in list_1
    	print(resault)
    	
    	# 没有就返回 False
    	resault_1 ="aa" not in list_1
    	print(resault_1)
    
    • 思考? 列表中也有"banana"为什么不执行?
    #扩展结合if进行使用 , 
    fruits = ["apple","orange","banana"]
    if 'apple' in fruits:
        print('I like apples!') #I like apples!
    elif 'banana' in fruits:
        print('Bananas are yummy too!')
    else:
        print('I prefer oranges.')
    

1.4 列表的排序

  1. 想要对列表的排序, 前提是列表中的内容要保持一致.

    • sort() 升序排序, 默认参数 reverse =False 如果为True就是反转.
    • 列表名.reverse() 相当于直接反转.
  2. 升序 和 降序.

    # 1. 创建一个列表
    list_1 = ["dd", "cc", "bb", "aa"]
    
    # 1.1 正常排序升序 sort()
    list_1.sort()  # 排序升序,从小到大
    print(list_1)  # ['aa', 'bb', 'cc', 'dd']
    
    print("-" * 30) #分割线
    
    # 1.2 降序  sort(reverse = True)
    # 如果不写默认 reverse = Fasle
    list_1.sort(reverse=True)  # 相当于反转
    # # 1.2.1 属于结合版本
    # list_1.sort()
    # list_1.reverse()
    print(list_1) #['dd', 'cc', 'bb', 'aa']
    
    
  3. 使用切片的方式.

    • 列表名[::-1]
    print(list_1[::-1])#反转
    

1.5 列表的嵌套

  1. 嵌套:顾名思义、 在列表中嵌套列表。
  2. 通常使用2种方式进行。
    • 通过 索引获取
    • 通过 循环获取
# 1.定义一个嵌套列表
my_list = [
    [1, 2, 3], ["a", "b", "c"], [True, False, True]
]

# 1.1 第一种方式拿其中数据
print(my_list[0])  # 拿到第一个列表
print(my_list[1][2])  # 拿第二个列表中的第二个元素 c

# 1.2 第二种情通过 for循环
for i in my_list: #外循环循环次数
    # 通过内循环拿到每个列表的具体元素.
    for j in i:
        print(j, end="\t")

1.6 练习 随机分班

  1. 需求分析: 把8个学生 ,随机分配到3个班级。
    • 请用代码实现。
    '''
    1. 需求分析:
        将8个同学,分别随机分配到 3 个班级中.
                    班级相当于
    
         students =['a','b','c','d','e','f','g','h']
    
        将每个班级放入列表中,相当于三个班级
            class = [
                [],[],[]
            ]
    
    2.重点如何使用循环,随机
    random.randint(0,2)
    '''
    
    import random
    # 1.创建学生
    students = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
    
    # 2.分为3个班
    class_student = [
        [], [], []
    ]
    
    # 3. 如何将学生插入班级里
    for i in students:
        """具体的往班级里面添加"""
         # class_student[0].append(i)  # 往第一个加
         # class_student[1].append(i)  # 往第二个加
         # class_student[2].append(i)  # 往第三个加
    
        #通过随机添加
        num = random.randint(0,2)
        class_student[num].append(i)
    
    print(class_student)
    
    #遍历输出嵌套数组中的元素
    for i in class_student:
        print(f"每个班有学生 :{i}")
        #内循环循环具体内容
        for name in i:
            print(name,end=" \t")
        print()# 作用换行.
    

1.7 练习 判断字符结尾

  1. 有一个列表,判断列表中的每一个元素是否 以p或a 结尾,

    • 如果是,则将其放入一个新的列表中,最后输出这个新的列表.
  2. 练习提示:

    • 如何判断列表中的元素以什么字符结尾?
    • 如何找到列表中的每一个元素?
    • 列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.
    # 根据题干得知, 相当于对列表中的元素进行比较
    
    # 1.创建列表
    list_1 = ["ak","ck","mp","oa","tt","ma"]
    
    #2.创建一个新列表 ,如果在list_1中判断出来就存放到该列表之中
    new_list =[]
    
    #3. 使用循环遍历list_1 列表并进行判断
    
    for i in list_1:
        #也可以使用字符串切片i[-1]
        #if i[-1]=='s' or i[-1]=='e':
        if i.endswith('p') or i.endswith('a'):
            new_list.append(i)
    
    #打印出新的列表
    print(new_list)
    

1.8 扩展: 知识点快速查找

  1. 列表快速查找

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

华为OD机试真题 JavaScript 实现【最长子字符串的长度】【2022Q4 100分】,附详细解题思路

一、题目描述 给你一个字符串s&#xff0c;字符串s首尾相连组成一个环形&#xff0c;请你在环形中找出‘o’字符出现了偶数次最长子字符串的长度。 二、输入描述 输入一串小写字母组成的字符串。 三、输出描述 输出一个整数。 四、解题思路 题目要求在给定的环形字符串中…

HTML中嵌入JavaScript代码的三种方式

第一种方式: <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>HTML中嵌入JavaScript的第一种方式</title> </head> <body> <!-- 1.要实现的功能…

Unix/Linux操作系统的最强入门科普(经典)

今天这篇文章&#xff0c;我们来聊聊操作系统&#xff08;Operating System&#xff09;。 说到操作系统&#xff0c;大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑&#xff0c;使用的是windows和macOS系统&#xff1b;用手机、平板电脑&#xff0c;则是…

深度学习入门——神经网络

神经网络 神经网络是一种受到人脑神经系统启发的机器学习模型。它由一系列相互连接的人工神经元组成&#xff0c;这些神经元以层次结构排列。每个神经元接收来自上一层神经元的输入&#xff0c;并根据权重和激活函数对输入进行加权处理&#xff0c;然后将输出传递给下一层神经…

【框架源码】Spring源码解析之Bean创建源码流程

问题&#xff1a;Spring中是如何初始化单例bean的&#xff1f; 我们都知道Spring解析xml文件描述成BeanDefinition&#xff0c;解析BeanDefinition最后创建Bean将Bean放入单例池中&#xff0c;那么Spring在创建Bean的这个过程都做了什么。 Spring核心方法refresh()中最最重要…

uniapp小程序订单页面UI

前言 之前用模板写了订单页面&#xff0c;由于需求改了导致这个页面做更新麻烦&#xff0c;弄了一下午&#xff0c;索性全部删除了自己写了&#xff0c;上面的tabs用的是b-ui框架写的&#xff0c;其他的都是原生写法。 &#x1f64f;如果这篇文章对你有帮助还请收藏点赞关注&…

【计算机视觉】不仅能分割一切简单物体,而且还能高精度分割一切复杂物体的SAM升级版本HQ-SAM来了

文章目录 一、SAM 导读二、SAM 的应用场景2.1 SAM-RBox-生成旋转矩形框2.2 Prompt-Segment-Anything-生成矩形框和掩2.3 Grounded-Segment-Anything-开放数据集检测与分割2.4 segment-anything-video-视频分割2.5 Open-vocabulary-Segment-Anything-开放词典分割2.6 SegDrawer-…

快速入门 Lua 编程

以下是一个简单的 Lua 快速编程教程&#xff0c;帮助你快速入门 Lua 编程。 安装 Lua 首先&#xff0c;你需要安装 Lua。你可以从 Lua 官网&#xff08;https://www.lua.org/download.html&#xff09;下载适合你的操作系统的安装包。安装完成后&#xff0c;你可以在命令行中…

CTFHub | 命令注入

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

记录一次scala项目导入编译失败的问题

文章目录 Scala项目环境问题记录小结 Scala项目环境 Java8 scala-2.11.12 MacBook Apple m2芯片 问题记录 1、scala版本安装 我的本地环境&#xff1a; ➜ ~ java --version openjdk 11.0.18 2023-01-17 OpenJDK Runtime Environment Homebrew (build 11.0.180) OpenJDK 64-…

【Flutter】Flutter 如何实现开屏广告

文章目录 一、前言二、实现开屏广告页面三、实现广告数据的加载四、开屏广告的完整代码五、总结 一、前言 开屏广告这个功能在商业应用中非常常见&#xff0c;它可以在应用启动时向用户展示广告&#xff0c;增加应用的商业价值。 如果你想深入学习 Flutter&#xff0c;掌握更…

BUUCTF 传统知识+古典密码 1

题目描述&#xff1a; 小明某一天收到一封密信&#xff0c;信中写了几个不同的年份 辛卯&#xff0c;癸巳&#xff0c;丙戌&#xff0c;辛未&#xff0c;庚辰&#xff0c;癸酉&#xff0c;己卯&#xff0c;癸巳。 信的背面还写有“甲子”&#xff0c;请解出这段密文。 key值&a…

大学生实习周记总结

大学生实习周记总结1 经过两个月的实习&#xff0c;我收获了很多&#xff0c;也懂得了许多&#xff0c;同时也成熟了不少。下面我将把我两个月的实习生活分成五个部分进行总结&#xff1a;教学经验、班主任工作、做事态度、学生友谊、感恩的心。 教学经验&#xff1a;如何上好一…

使用大型语言模(LLM)构建系统(六):构建端到端系统

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程&#xff0c;我想和大家一起分享一下该门课程的一些主要内容。之前我们已经学习了下面这些知识&#xff1a; 使用大型语言模(LLM)构建系统(一)&#xff1a;分类使用大型语言模(LLM)构建系统(二):内容审核、…

如何系统的学习python中的numpy,pandas,matplotlib?太有用了!!!

前言 随着大数据、云计算和人工智能的发展&#xff0c;越来越多的企业需要以数据为基础做出决策。数据分析是处理大量数据的过程&#xff0c;分析数据以识别趋势和模式&#xff0c;并从数据中提取有用的信息来支持业务决策。数据分析可以应用于各种不同的领域&#xff0c;如营…

性能测试如何做?性能测试-稳定性场景设计详细,晋升之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 我们谈到测试设计…

liunx服务器安装kafka

liunx服务器安装kafka 1. 初始化安装环境1.1 安装jdk1.1.1 找到对应的jdk版本1.1.2 下载并安装1.1.2.1 配置jdk环境变量 1.2 安装 zookeeper1.2.1 查找kafka对应zookeeper版本启动 2. 下载kafka 安装包 kafka 3.0.0 之前 &#xff08;包括3.0.0版本&#xff09;支持jdk 8 &…

浏览器唤醒本地应用

我们在使用一些应用的时候&#xff0c;需要通过本地浏览器来唤醒本地应用的需求。 就像我们以前使用QQ一样&#xff0c;在网页上点击了某个按钮&#xff0c;会唤醒本地安装的QQ应用。 这里来介绍一下怎么使用自定义协议来唤醒本地的Electron应用&#xff08;其他框架写的应用同…

汽车电子Autosar之以太网SOME/IP(续)

前言 首先&#xff0c;请问大家几个小小问题&#xff0c;你清楚&#xff1a; 你知道什么是SOME/IP SD吗&#xff1f;SOME/IP-SD有何作用呢&#xff1f;SOME/IP-SD 包含哪些内容呢&#xff1f;SOME/IP-TP 为什么会存在&#xff1f; 今天&#xff0c;我们就来一起探索并回答这…

Mysql数据库表管理和用户管理与授权

一、表结构管理 1. 修改表名 ALTER TABLE 旧表名 RENAME 新表名 2.扩展表结构&#xff08;增加字段&#xff09; ALTER TABLE 表名 ADD 字段名 数据类型; 3.修改字段名&#xff0c;添加唯一健 change ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束]; 4.删除字段…