python之旅第六站(python的内置数据结构:列表,元组,集合,字典)

第六章:python的内置数据结构

一.什么是内置数据结构?

  1. 数据结构是一个很大的概念,这里简单描述为 计算机组织和存储数据的方式.
  2. 更通俗易懂的来理解,可以把数据比作居民,对于不同小区,不同户型就是不同的结构,房子作为组织数据的结构,居民为数据.
  3. 例如:一室一厅住一个人,两室一厅住两个人就好比两种数据结构,一种是存放一个数据,另一种是存放两个数据.
  4. 居民和房子看做一个整体组成一种数据结构,住在树上的原始人,山顶洞人也各为一种数据结构.
  5. 那么内置数据结构就是官方已经准备好的数据结构,可以直接拿来用的.各种编程语言都有提供这些.
  6. 如java中的array,list,map等,python为我们提供了4种经常用并且很有用的数据结构:列表,元组,集合,字典.

二.内置数据结构的演示

列表
  1. 用来存储一组有序数据元素的数据结构,元素之间用逗号分隔.(每一个数据都称为一个元素)
  2. 列表中的数据元素应该包括在方括号中 [ ].
  3. 列表是可变的数据类型(创建之后可以对其元素进行改变), 一旦创建了一个列表,可以添加, 删除或者搜索列表中的元素.
  4. 列表中的元素不必是相同的类型.
  5. 如果只有一对方括号而没有任何元素则表示空列表.

在这里插入图片描述

等号 = 直接将创建的列表赋值给变量:

在这里插入图片描述

使用type()查看列表的类型:

在这里插入图片描述

对列表的操作与字符串很类似.
列表也可以像字符串一样与一个数字相乘,实现复制功能:

在这里插入图片描述

列表获取指定位置的元素和字符串是一致的,主要有普通索引和截取两种.
普通索引是获取某一特定位置的元素:

在这里插入图片描述

按索引截取,操作同字符串一样,但截取的结果是一个列表:

在这里插入图片描述

与字符串不同的地方是字符串无法通过指定位置修改该位置的内容.
尝试修改字符串的内容,程序会报错:

在这里插入图片描述

而列表可以:

在这里插入图片描述
列表常用的函数(官方所提供的)

函数名称函数说明
append()在列表尾部追加新的元素
count()统计元素在列表中出现的次数
extend()在列表末尾一次性追加另一个序列中的多个值
insert()将对象插入列表中
pop()移除列表中的一个元素,并返回该元素的值
reverse()对列表中的元素反向存储
sort()对列表进行排序
index()在列表中找出某个值第一次出现的位置
remove()用于移除列表中某个值的第一个匹配项
len()返回列表元素个数
max()返回列表元素中的最大值
min()返回列表元素中的最小值

对这些函数进行简单的演示:

创建列表并使用append()函数为列表尾部追加元素:

在这里插入图片描述

使用count()函数查看指定元素的个数:

在这里插入图片描述

使用extend()函数可以将另一个列表直接拼接到当前列表尾部,类似字符串的 + 号(一般可迭代对象都可以这样用,以后会说迭代器):

在这里插入图片描述

在指定位置插入元素用 insert():

在这里插入图片描述

通过pop()函数删除元素并返回这次删除的元素,默认删除了列表最后一个位置的元素.也可以在括号指定索引:

在这里插入图片描述

通过指定索引删除时,会发生越界问题:

在这里插入图片描述

想要指定元素进行删除可以使用remove()函数:

在这里插入图片描述

清除整个列表的元素可以使用clear()函数:

在这里插入图片描述

对列表的元素进行排序可以用sort()函数:

在这里插入图片描述

反向排序:

在这里插入图片描述

获取一个元素在列表中第一次出现的位置用index():

在这里插入图片描述

获取列表中元素的个数用len():

在这里插入图片描述

max()和min(),分别是求最大值和最小值,在很多地方都有用:

在这里插入图片描述

元组
  1. 元组是序列数据结构的另一个重要类型,元组与列表非常类似,唯一的不同是元组一经定义,其内容就不能修改(不可变类型).
  2. 从形式上,元组的所有元素放在一对括号中,元素之间使用逗号分隔,如果元组中只有一个元素则必须在最后增加一个逗号.
  3. 元组的创建非常简单,可以直接在一对括号中用逗号分隔来创建一个元组:

在这里插入图片描述

元组内元素的获取方法主要分为普通索引和截取两种:
普通索引,同列表一样:

在这里插入图片描述

按索引截取的结果也是一个元组:

在这里插入图片描述

元组是不可变类型,同字符串:

在这里插入图片描述

max(),min(),len()同样适用于元组:

在这里插入图片描述

查找元素位置的index()也可以用:

在这里插入图片描述

"但是增删改,插入之类的操作不适用于元组,因为元组是不可变的."
集合
  1. 集合(set)属于python数据结构中的无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔.
  2. 同一个集合内的每个元素都是唯一的,元素之间不允许重复.
  3. 集合中只能包含数字,字符串,元组等不可变类型的数据;而不能包含列表,字典,集合等可变类型的数据.
  4. 创建一个集合在{ }中用逗号将各个值,分隔开来就行了.
可以看出输出顺序和添加顺序不一致,说明集合是无序的(看起来输出是有序的,但也仅限于看起来,集合中的元素是没有索引的).
因为集合没有顺序,因此不能使用索引访问元素.另外也不能通过索引删除元素:

在这里插入图片描述

集合中每个元素都是唯一的:

在这里插入图片描述

集合是可变数据类型,虽然无法通过索引添加,删除里边的元素,但是可以通过add()函数添加一个元素,具体添加的位置是python帮我们选的:

在这里插入图片描述

通过remove()函数删除指定元素:

在这里插入图片描述

要想元素不存在时执行删除不会报错,可以使用discard():

在这里插入图片描述

pop()函数是随机删除一个元素:

在这里插入图片描述

clear()函数同样可以用来清空一个集合(很多类似的通用函数,大家要敢想,去尝试,就会发现新大陆):

在这里插入图片描述

上面演示并没有用 { }空大括号创建集合,因为这样并不是一个集合,而是下面要说的字典(dict):

在这里插入图片描述

字典
  1. 字典是包含若干“键:值”元素的无序可变序列,字典中的每个元素包含用冒号分隔开的“”和“”两部分,表示一种映射或对应关系,类似于通过联系人姓名查找地址和联系人详细情况的地址簿,即把键(名字)和值(详细情况) 联系在一起.
  2. 定义字典时,每个元素的“键”和“值”之间用冒号分隔,不同元素之间用逗号分隔,所有的元素放在一对大括号“{}”中.
  3. 字典中元素的“”的类型必须是python的不可变类型,例如数字类型,字符串类型,元组类型等;但不能使用列表,集合,字典或其他可变类型作为字典的“键”.
  4. 另外,字典中的“不允许重复,而“”是可以重复的.
建一个空字典,用{ },集合不能这么做,虽然他俩都是用大括号作为定界符:

在这里插入图片描述

向字典中新添值:

在这里插入图片描述

另一种形式:

在这里插入图片描述

访问字典的值要通过键:

在这里插入图片描述

修改对应键的值:

在这里插入图片描述

删除 ''键值对'' 用 popitem()函数默认从最后删,pop()函数则是删除指定键的键值对,要删的键不存在会报错:

在这里插入图片描述

keys() 和 values() 分别获得所有键和所有值:

在这里插入图片描述

同样可以len() (- _ -!):

在这里插入图片描述

常用的函数大概就这些,如果想了解所有内置函数,官方文档有详细说明.(之前第二章有提到过文档在哪)

在这里插入图片描述

工厂函数
涉及到类的知识了,先会用就行.
通过四种内置结构的工厂函数创建对应的空结构:

在这里插入图片描述

结构间的转换
通过list()函数,把字符串转换成列表,字符串本质上也是一种内置结构:

在这里插入图片描述

也可以把元组转换成列表:

在这里插入图片描述

还可以把集合转换成列表:

在这里插入图片描述

可以将字典的 ''键'' 转换成列表:

在这里插入图片描述

tuple()将其他类型转为元组:

在这里插入图片描述

set()将其他类型转为集合,重复的值只会出现一次:

在这里插入图片描述

结构嵌套
结构是可以嵌套使用的,也就是一些结构可以作为另一个结构的元素,被包含的结构会作为一个元素存在.
列表包含列表:

在这里插入图片描述

列表包含元组:

在这里插入图片描述

元组也可以嵌套列表:

在这里插入图片描述

把嵌套元组或嵌套列表转换成字典:

在这里插入图片描述

这样写太麻烦了,工厂函数dict还提供了一个简单形式:

在这里插入图片描述

del关键字
  1. 创建的东西使用完,可以使用del删除他们,这一点适用于所有类型的python对象.
  2. 对象到底是什么以后再说,现在只要知道,我们创建出来的数字,字符串,布尔值,内置结构等等都是对象即可.
    在这里插入图片描述
    在这里插入图片描述
del对列表和字典有特殊的用法,del可以通过列表指定的索引删除对应位置的元素:

在这里插入图片描述

del可以通过字典的键删除对应的键值对:

在这里插入图片描述
这四种内置数据结构有很多共同点,不同点,是方便记忆的突破口.
同时挖了很多坑,以后会填上.

如有错误还望指出
允许转载但请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值