Python学习从0到1 day10 Python数据容器.1.列表

news2024/12/23 15:55:37

我一直相信

        ——24.1.27

一、数据容器的定义

1.Python中的数据容器:

一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串、数字、布尔等

2.数据容器的分类

数据容器根据特点的不同,如:

        是否支持重复元素

        是否可以修改

        是否有序,等

分为五类,分别是:

        列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

它们各有特点,但都满足可以容纳多个元素的特性

二、数据容器-列表

1.列表的定义

字面量:[元素1,元素2,元素3,……]

定义变量:变量名称 = [元素1,元素2,元素3,……]

定义空列表:变量名称 = [ ]         变量名称 = list()

列表内的每一个数据,称之为元素

以[ ]作为标识

列表内每一个元素之间用“,”隔开

注意:列表可以一次性存储多个数据,且可以为不同的数据类型,支持嵌套

案例演示

future_list = ["一切都会好的","万事胜意","我一直相信"]
print(future_list)
print(type(future_list))

嵌套演示

future_list1 = [["mqz","lyc","wp","lcl"],[100,85,90,75],1,1,4]
print(future_list1)

2.总结

1.列表的定义语法:

        [元素1,元素2,元素3,……]

2.什么是元素:

        数据容器内的每一份数据,都称之为元素

3.元素的类型有限制吗:

元素的数据类型没有任何限制,甚至元素也可以是列表,这样就定义了嵌套列表

3.列表的下标(索引)

如何从列表中取出特定位置的数据呢?

        我们可以使用:下标索引

列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始、依次递增,我们只需要按照下标索引,即可取得对应位置的元素

或者,可以反向索引,也就是从右向左,从后向前,从-1开始,依次递减(-1、-2、-3、……)

future_list = ["一切都会好的","万事胜意","我一直相信"]
print(future_list[1])
print(future_list[0])
print(future_list[2])

print(future_list[0])
print(future_list[1])
print(future_list[2])

print(future_list[-3])
print(future_list[-2])
print(future_list[-1])

如果列表是嵌套的列表,同样支持下标索引

future_list1 = [["mqz","lyc","wp","lcl"],[100,85,90,75],1,1,4]
print(future_list1[0][3])
print(future_list1[0][1])

注意:通过下标索引取数据,一定不要超出范围

4.总结

1.列表的下标索引是什么:

        列表的每一个元素,都有编号称之为下标索引

        从前向后的方向,编号从0开始递增

        从后向前的方向,编号从-1开始递减

2.如何通过下标索引取出对应位置的元素呢?

        列表[下标],即可取出

3.下标索引的注意事项:

        需注意下标索引的取值范围,超出范围无法取出元素,并且会报错

三、列表的常用操作(方法)和特点

1.函数和方法

函数是一个封装的代码单元,可以提供特定功能

Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

函数:

        def add(x,y):

                return x+y

方法:

class Student:

        def add(self,x,y):

                return x+y

方法和函数的功能一样,有传入参数,有返回值,只是方法的使用格式不同

函数的使用:num = add(1,2),可以直接通过函数名,传入参数调用

方法的使用:student = Student(),先获得方法所在的这个叫做class类对象

                      num = student.add(1,2),再通过class类对象.将方法点出来

2.列表的查询功能(方法)

1.查找某元素的下标

查找某元素的下标

功能:查找指定元素在列表的下标,如果找不到,报错ValueError

语法:列表.index(元素)

index就是列表对象(变量)内置的方法(函数)

例:

future_list = ["一切都会好的","万事胜意","我一直相信"]
print(future_list.index("一切都会好的"))
index = future_list.index("一切都会好的")
print(index)

 2.统计列表内,有多少个元素

语法:len(列表)

可以得到一个int数字,表示列表内的元素数量

my_list1 = [1,1,1,1,1,1,9,7,6,4,3]
count = my_list1.count(1)
print(f"列表中1的个数有:{count}个")
count = len(my_list1)
print(f"列表中元素个数有{count}个")

3.列表的修改功能(方法)

1.修改特定位置(索引)的元素值:

语法:列表[下标] = 值

可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)

future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list[2] = "我一直相信,一切都会好的"
print(future_list[2])

2.插入元素:

语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素

future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.insert(2,"苦难是花开的伏笔")
print(future_list)

3.追加元素方式1:

语法:列表.append(元素),将指定元素,追加到列表的尾部

future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)

4.追加元素方式2:

语法:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部

future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)

future_list1 = [["mqz","lyc","wp","lcl"],[100,85,90,75],1,1,4]

future_list.extend(future_list1)
print(future_list)

5.删除元素

语法1:del 列表[下标]

语法2:列表.pop(下标)

del只能删除元素,而pop不仅能将元素删除还能将删除的元素作为返回值得到

future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)
del future_list[1]
print(future_list)
future_list.pop(1)
print(future_list)

6.列表的修改功能(方法)

删除某元素在列表中的第一个匹配项

语法:列表.remove(元素)

my_list = [1,2,3,2,3]
my_list.remove(2)
print(my_list)
future_list = ["一切都会好的","万事胜意","我一直相信"]
future_list.append("苦难是花开的伏笔")
print(future_list)
future_list.remove("苦难是花开的伏笔")
print(future_list)

7.清空列表内容

语法:列表.clear()

my_list = [1,2,3,2,3]
my_list.clear()
print(my_list)

8.统计某元素在列表内的数量

语法:列表.count(元素)

my_list1 = [1,1,1,1,1,1,9,7,6,4,3]
count = my_list1.count(1)
print(f"列表中1的个数有:{count}个")

4.总结

四、列表的特点

①可以容纳多个元素(上限为2**63-1、9223372036854775807个)

②可以容纳不同类型的元素(混装)

③数据是有序存储的(有下标符号)

④允许重复数据存在

⑤可以修改(增加或删除元素等)

五、练习案例:常用功能练习

有一个列表,内容是:[21,25,21,23,22,20],记录的是一批学生的年龄

请通过列表的功能(方法),对其进行:

1.定义这个列表,并用变量接受它

2.追加一个数字31,到列表的尾部

3.追加一个新列表[29,33,30],到列表的尾部

4.取出第一个元素

5.取出最后一个元素

6.查找元素31,在列表中的下标位置

ExampleList = [21,25,21,23,22,20]
ExampleList.append(31)
ExampleList2 = [29,33,30]
ExampleList.extend(ExampleList2)
print(ExampleList[0])
print(ExampleList[len(ExampleList)-1])
print(ExampleList[-1])
print(ExampleList.index(31))

六、列表的遍历

什么是遍历?

        将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代

如何遍历列表的元素?

        可以使用while或for循环

如何在循环中取出列表的元素?

        使用列表[下标]的方式取出

循环条件如何控制?

        定义一个变量表示下标,从0开始

        循环条件为 下标值 < 列表的元素数量

1.列表的遍历——while循环

def list_while_func():
    #while循环遍历列表
    my_list = ['一切都会好的','未来可期','苦难是花开的伏笔']
    # 循环控制变量通过下标索引来控制,默认0
    # 每一次循环将下标索引变量+1
    # 循环条件:下标索引变量 < 列表的元素数量
    i = 0
    while i < len(my_list):
        print(my_list[i])
        i += 1

list_while_func()

2.列表的遍历——for循环

def list_for_func():
    my_list2 = [1,1,4,8,5,7,2,3,6]
    for element in my_list2:
        print(element,end=' ')

list_for_func()

3.while循环和for循环的对比

while循环和for循环,都是循环语句,但是细节不同:

在循环控制上:

        while循环可以自定义循环条件,并自行控制

        for循环不可以自定义循环条件,只可以一个个从容器内取出数据就

在无限循环上:

        while循环可以通过条件控制做到无限循环

        for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上:

        while循环适用于任何想要循环的场景

        for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

for循环更简单,while更灵活

for用于从容器内依次取出元素并处理,while用以任何需要循环的场景

4.练习案例:取出列表内的偶数

定义一个列表,内容是:[1,2,3,4,5,6,7,8,9,10]

        遍历列表,取出列表内的偶数,并存入一个新的列表对象中

        使用while循环和for循环各操作一次

提示:

        通过if判断来确认偶数

        通过列表的append方法,来增加元素

arr = [1,2,3,4,5,6,7,8,9,10]
i=0
arr2 = []
for i in arr:
    if i % 2 == 0:
        arr2.append(i)
print(arr)
print(arr2)

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

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

相关文章

[docker] Docker容器服务更新与发现之consul

一、consul的相关知识 1.1 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#…

第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学B组)题解

尝试再做一次&#xff0c;我记得还是有点难&#xff0c;我会尽量多写一点解析&#xff0c;尽量让基础比较弱的友友也能看懂&#xff0c;希望能给你带来帮助 目录 1. 日期统计 题目描述 解题思路 具体代码 2. 01 串的熵 题目描述 解题思路 具体代码 3. 冶炼金属 题目…

性价比高的蓝牙运动耳机推荐,公认好用的运动耳机品牌推荐

​随着人们对健康的重视&#xff0c;越来越多的人选择加入运动行列。然而&#xff0c;独自运动可能会让人感到乏味&#xff0c;因此许多人在运动时都会选择佩戴运动耳机&#xff0c;让音乐伴随整个运动过程。那么&#xff0c;如何挑选适合自己的运动耳机呢&#xff1f;今天我为…

2024美赛数学建模E题思路+代码

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…

【Docker】在Windows下使用Docker Desktop创建nginx容器并访问默认网站

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Docker容器》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

品牌运营如何打造出独特的风格?

在上网冲浪日益普遍&#xff0c;在线营销失去神秘的当下&#xff0c;品牌如果一味强调人设&#xff0c;只会浪费宣传成本。从老钱风、静奢风的兴起到多巴胺、美拉德的流行&#xff0c;后消费时代的运营需要注重风格的独特化&#xff0c;与消费者进行真诚沟通&#xff0c;今天媒…

vue3开发,axios发送请求是携带params参数的避坑

vue3开发,axios发送请求是携带params参数的避坑&#xff01;今天一直报错&#xff0c;点击新增购物车&#xff0c;报错&#xff0c; 【Uncaught (in promise) TypeError: target must be an object】。查询了网上的资料说的都不对。都没有解决。最终还是被我整明白了。 网上网…

项目实战:一个基于标准库的具备最值获取的万能容器实现

目录 写在前面 需求 分析 接口设计 项目实现 一些思考与总结 致谢 写在前面 刚刚介绍了变参模板和完美转发&#xff0c;现在换一换脑子做一个小的项目实战吧。博主最近学习的是标准库&#xff0c;总体来说&#xff0c;我认为标准库中的内容是很trivial的&#xff0c;重点…

蓝桥杯 第 1 场 小白入门赛

目录 1.蘑菇炸弹 2.构造数字 3.小蓝的金牌梦 4.合并石子加强版 5.简单的LIS问题 6.期望次数 1.蘑菇炸弹 我们直接依照题目 在中间位置的数进行模拟即可 void solve(){cin>>n;vector<int> a(n1);for(int i1;i<n;i) cin>>a[i];int ans0;for(int i2;i…

uniapp底部栏设置未读红点或角标

pages.json {... // 省略"tabBar": {"color": "#333333","selectedColor": "#3296fa","backgroundColor": "#ffffff","borderStyle": "white","list": [{"pagePat…

【Go】Viper读取配置文件

go get github.com/spf13/viper 1. 设置配置文件的信息 etcd:ip: "192.168.6.106"port: 2379dialTimeout: 3redis:ip: "192.168.6.107"port: 6379password: "root1028"2. 读取配置文件的信息 2.1 通过kv的方式 package mainimport ("fm…

【Tomcat与网络5】再论Tomcat的工作过程与两种经典的设计模式

前面两篇&#xff0c;我们重点分析了Tomcat的容器和连接器的基本设计&#xff0c;今天我们来看一下两个机构如何在service的调度下进行协同工作的。 目录 1.模板模式与Tomcat的重用性设计 2.观察者模式与Tomcat可扩展性设计 1.模板模式与Tomcat的重用性设计 首先&#xff0…

电脑护眼模式怎么设置?4个有效方法保护眼睛!

“我感觉每天使用电脑的时间久了&#xff0c;眼睛总是不太舒服。电脑护眼模式怎么设置呢&#xff1f;有什么比较好用的方法可以推荐吗&#xff1f;” 如果长时间使用电脑&#xff0c;或许会让我们感到用眼疲劳。电脑护眼模式是现代人常用的电脑设置之一&#xff0c;它能有效地减…

通俗易懂三大范式

通俗易懂三大范式 第一范式说的是每个字段不可再分 第二范式说的是不能存在部分依赖&#xff08;不能由联合主键的部分就可以推出其他字段&#xff0c;必须整个联合主键才能推出其他字段&#xff09; 第三范式说的是不能存在间接依赖(A&#xff08;主键&#xff09;→B,B→C…

wordcloud库和jieba库的使用

文章目录 wordcloud库的简单示范使用wordcloud库报错记录anaconda安装第三方jieba库jieba库的简单示范任务 1&#xff1a;三国演义中的常见词汇分布在“三国"这两个隶书字上&#xff0c;出现频率高的词字体大任务 2&#xff1a;三国演义中出现频率前十的人名。必须是以下这…

【日常总结】windows11 设置文件默认打开方式

一、场景 二、实战 Stage 1&#xff1a;打开设置 Stage 2&#xff1a;应用 > 默认应用 > 搜索 .txt Stage 3&#xff1a;修改成notepad &#xff0c;设置默认值即可 一、场景 windows 11 .txt 默认记事本打开 需求&#xff1a;如何使用notepad打开呢 &#xff1f;…

App Inventor 2 低功耗蓝牙(BLE) 硬件接入、数据通信及IO控制

低功耗蓝牙(BLE)以低功耗、低成本、开发简便逐渐被广泛应用&#xff0c;本文主要介绍一款较为通用、价格低廉的BLE设备从零开始如何利用App Inventor 2开发一款自己专属的手机蓝牙App应用。 BLE与经典蓝牙的区别可参考&#xff1a;《低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别》…

一张序列图搞懂resilience4j的工作原理

本文主要回答以下几个问题&#xff1a; Spring Cloud与Resilience4j如何集成的&#xff08;spring-cliud-circuitbreaker-resilience4j模块的 Resilience4JAutoConfiguration类实现了主要组件的注入&#xff0c;特别是在Resilience4jBulkheadConfiguration中定义如何自定义fac…

Qt简易的五子棋

五子棋是个简单的小游戏&#xff0c;尝试使用Qt将他做出来&#xff0c;学习时的练习demo。 成果展示 需求分析 五子棋&#xff1a;在棋盘上&#xff0c;黑棋先行&#xff0c;交替下棋&#xff0c;五子练成直线获取胜利。 实现过程 1.棋盘绘制&#xff1a;下棋的第一步肯定是绘制…

ubuntu gedit主题更改

ubuntu16.04 gedit 编辑器又有首选项如何设置主题 这里下载主题 将主题XML复制到 /usr/share/gtksourceview-3.0/styles 文件夹内&#xff1b; 使用gsettings 命令设置喜欢的配色方案&#xff0c;使用方式如下&#xff1a;(实测不带.xml后缀哦) gsettings set org.gnome.gedi…