news 2026/7/17 20:34:01

列表、字符串、元组、集合、字典等的联系区别及使用方法以及解包在其中的使用 (1)列表篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
列表、字符串、元组、集合、字典等的联系区别及使用方法以及解包在其中的使用 (1)列表篇

1.综合概念上的比较

列表

可变类型

可以储存不同类型的元素

元素有序(索引在其中有意义),可以重复,元素可以修改

元组

不可变类型

和列表类似,但是一旦定义完成,不可修改,只能进行查询操作

字符串

不可变类型

不可变性,有序性,可迭代性(可以使用循环语句将其中的元素输出

集合

可变类型

无序的(不可以使用索引访问),不可重复的,可以修改的(有自动去重功能

但是集合中的元素本身必须是不可变类型(如数字,字符串,元组)

字典

可变类型

key:value

键(key)不能重复,不能为可变类型,如列表、集合、字典等;如果键重复,后面自动覆盖前面的值

值(value)可以是任何类型的数据

可变类型和不可变类型的区别;

可变类型(如列表、集合、字典):改内容,地址不变(如下图,最后输出的地址是一样的)

不可变类型(如元组、字符串):改内容,地址必变(如下图,最后输出的地址不一样)

可以使用type()来查看数据类型

2.每一种的详细用法以及案例说明

(1)列表(list)

用方括号括起,形如[ ],比如[1,'a',3.14,True,5]就是一个列表(这里的字母需要加引号,不然电脑认为其为变量会报错)(True和False属于布尔类型)

附加:索引的基本概念

1'a'3.14True5
正向索引01234
逆向索引-5-4-3-2-1

正向索引以左边第一个为索引0,逆向索引以右边第一个为索引-1

操作1:修改

使用列表名[索引]=新的值即可

比如t=[1,'a',3.14,True,5],现在要将3.14改为3.1415

因为3.14的正索引是2,逆向索引是-3,所以有这两种,其结果相同

如果索引不存在会直接报错

操作2:删除

使用del 列表名[索引]即可

比如上面的t=[1,'a',3.14,True,5],删除3.14

操作3:切片

主要结构:列表名【开始索引;结束索引;步长】

步长通常默认为1,实际上可正可负

最后切片出的索引采取前闭后开的原则

比如t=[1,'a',3.14,True,5],若s[1;3;1]则只包括索引1和索引2,索引3不取

t[1;3]是被允许的,此意是步长取默认步长1,但是第一个分号不能省略

操作4:几种主要的使用方法(t是列表名)

apppend()在列表尾部添加元素t.append()
insert()在指定索引前插入该元素t.insert(索引,元素)
remove()移除列表中第一个匹配到的值t.remove()
pop()删除列表中指定索引位的元素(如果未指定,删最后一个t.pop()
sort()

对列表进行排序(默认从小到大)(但是一定要类型一致

如果有相同的元素,相对顺序得到保留

比如有两个a,一个索引2一个索引5,排序之后索引2的a还是排在前面

t.sort()
sorted()相当于在原列表的基础上排序之后返回一个新列表,有返回值a=sorted(t)
reverse()反转列表元素t.reverse()

很明显的是在上面的主要使用方法中,只有sorted最后使用方法是a=sorted(t),即只有它有返回值,其余的都是直接修改列表了

如果输入a=sort(t)是错误的,a没有返回值,赋值None

现在给出一些案例

(1)将用户输入的十个数字储存到一个列表中,并将列表数字进行排序,输出其中最小值

这里就最开始的排序给定两种方法以及分析

第一种是比较标准的,用的是在列表尾部添加元素的方式

第二种是不怎么标准的,因为其输出的列表的组成元素都是字符串,其比较的方法是ASCII码值比较法,所以不太规范,请注意,第二种里面写的a=a+num是基于两种都是同种类型的情况下才可以这么合并

最小值就是排序之后的零索引,所以直接print(a[0])即可得到最小值

(2)合并两个列表中的元素,并且对合并结果进行去重处理

a=['a',2,3,False,5,7,'b',3.14]

b=[2,3,True,'b',3.1415,8,6]

这两种逻辑是一样的,只有一个语句不同(一个是列表的合并,一个是列表的解包)

去重的逻辑:对于a中的每一个元素,如果它不在b里,就把它添加到新建的空列表d中,所以循环结束之后d里面都是a中有b中没有的元素,在最后的时候把d和b合并,就是去重的结果

组包和解包

现在讲讲里面涉及的解包和组包思想

解包:将列表这一类容器解开成一个个独立的元素

组包:把多个值合并到一个容器

例如s=[1,2,3]

a,b,c=s就是解包操作,相当于把右边拆开,里面的东西挨个分给左边的变量

*在解包里的作用是:打包剩余零散元素(当左边变量小于右边元素的时候)

举个例子:s=[1,2,3,4,5]

a,b,*c=s

其输出结果会是a=1,b=2,c=[3,4,5] 同时这里也要注意:没有*的变量直接拿值,有*的变量拿列表(元组里面也是一样的)

并且还有一点很重要的就是哪怕只剩下1个或者0个元素,带*的永远是列表

如下图所示

仅代表个人观点,欢迎友善批评指正

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 20:31:02

鲁班猫板:大学生编程入门与硬件开发实战指南

1. 为什么大学生需要鲁班猫板入门编程第一次接触编程的大学生往往面临一个尴尬的困境:学校教的C语言还在写黑框程序,而网上炫酷的智能小车、人脸识别项目又不知从何入手。传统学习路径存在几个断层:语法学习与实际硬件脱节:在VC6.…

作者头像 李华
网站建设 2026/7/17 20:28:48

WSL命令大全:从安装到高级配置实战指南

1. WSL基础命令全解析Windows Subsystem for Linux(WSL)已经成为开发者跨平台工作的标配工具。作为在Windows系统内原生运行Linux二进制文件的兼容层,它完美解决了开发环境统一的问题。我日常90%的Linux操作都通过WSL完成,下面这些…

作者头像 李华
网站建设 2026/7/17 20:28:31

Win10 22H2迅雷下载与官方镜像全解析

1. Win10 22H2版本迅雷下载资源全解析作为Windows 10的最后一个重大更新版本,22H2(2022年10月更新)至今仍是企业环境和老旧设备的主力选择。最近在技术社区发现不少用户在寻找该版本的官方镜像下载渠道,特别是希望通过迅雷这类P2P…

作者头像 李华
网站建设 2026/7/17 20:26:10

深入解析Linux文件系统接口原理与优化实践

1. 文件系统接口:操作系统的数据管家 刚接触操作系统的学习者常会困惑:为什么删除U盘文件前要"安全弹出"?为什么有些软件安装需要管理员权限?这些问题的答案都藏在文件系统接口的设计哲学里。作为用户与存储设备之间的桥…

作者头像 李华
网站建设 2026/7/17 20:24:34

HarmonyOS7 基础按钮展示卡片:用 Button 把按钮样式做得更顺手

文章目录前言这个案例适合怎么学从布局读到交互核心逻辑说明完整代码放到项目里要注意什么写在最后前言 这篇继续聊 HarmonyOS7 里的 Button 基础样式。如果你刚开始学 ArkUI,不建议一上来就背属性名,那样很容易看完就忘。更好的方式是先搞清楚&#xf…

作者头像 李华