您的当前位置:首页正文

带你从入门到精通——Python(四. 五大容器一)

来源:九壹网

建议先阅读我之前的博客,掌握一定的Python前置知识后再阅读本文,链接如下:


四. 五大容器一

        容器就是能够容纳多个元素的python数据类型,常用的容器有以下五种:列表list、元组tuple、字符串str、集合set、字典dict,这里将会一一为大家介绍。

4.1 列表

4.1.1 列表的定义

        列表是一次可以存储多个数据的数据类型,列表内的每一个数据,称之为元素,以中括号[]为标识,列表内每一个元素之间用逗号隔开,常见的列表定义方式如下:

# 定义空列表
l1 = []
l2 = list()

# 定义非空列表
l3 = [1, 2, 3]
# 列表中可以存储不同类型的元素
l4 = [1, 3.14, True, '你好']


# 列表支持嵌套
l5 = [l1, l2, l3, l4]
# 输出[[], [], [1, 2, 3], [1, 3.14, True, '你好']]

        注意:列表中的元素是可以重复的、可以修改的并且是有序的。

4.1.2 列表的下标索引

        我们可以使用下标索引,快速地从列表中取出特定位置的数据,具体格式为:列表名[下标]。

        如上图所示,列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增

        此外,在Python中也支持负索引,也就是从后向前:从-1开始,依次递减即-1、-2、-3...,具体如上图所示。

        对于有嵌套的列表,我们可以使用多重索引的方式获取指定元素,例如,要获取上图中的最左端的元素,可以使用列表名[0][0]来获取。

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

4.1.3 列表的常用操作

4.1.3.1 列表的增删改查

        对于列表来说增加元素主要有以下方法:

        列表名.append(元素):把指定元素追加到对应列表中。

        列表名.extend(容器):把指定容器中的元素依次取出追加到对应列表中。

        列表名.insert(索引,元素):把指定元素插入到对应列表的指定索引位置。

mylst = [1, 2, 3]
mylst.append(4)
print(mylst)
# 输出[1, 2, 3, 4]
tmplst = [5, 6]
mylst.extend(tmplst)
print(mylst)
# 输出[1, 2, 3, 4, 5, 6]
mylst.insert(0, 0)
print(mylst)
# 输出[0, 1, 2, 3, 4, 5, 6]

        对于列表来说删除主要有以下方法:

        列表名.pop(索引):把指定索引位置处元素从列表中删除。

        del 列表名[索引]:把指定索引位置处元素从列表中删除。

        列表名.remove(元素):把指定元素直接从列表中删除,如果有重复元素,则默认删除最靠左的第一个元素。

        列表名.clear():清空列表中所有元素。

        del 列表名:删除整个列表

mylst = [0, 1, 2, 3, 4, 5, 6]
mylst.pop(3)
print(mylst)
# 输出[0, 1, 2, 4, 5, 6]
del mylst[0]
print(mylst)
# 输出[1, 2, 4, 5, 6]
mylst.remove(5)
print(mylst)
# 输出[1, 2, 4, 6]
mylst.clear()
print(mylst)
# 输出[]

        对于列表来说修改元素主要有以下方法:

        列表名[索引] = 新元素:修改列表指定索引位置的元素。

mylst = [1, 2, 3, 3]
mylst[0] = 0
print(mylst)
# 输出[0, 2, 3, 3]

        对于列表来说查询主要有以下方法:

        列表名[索引]:查询指定索引位置处的元素。

        列表名.count(元素):查询指定元素在列表中出现的次数,注意:如果元素不存在则返回0。

        列表名.index(元素):查询指定元素在列表中出现的索引位置,注意:如果元素不存在会报错,如果有重复元素,则默认删除最靠左的第一个元素的索引位置。

        len(列表名):查询指定列表的元素总个数。

mylst = [1, 2, 3, 3]
print(mylst.count(3))
# 输出2
print(mylst.index(2))
# 输出1
print(len(mylst))
# 输出4

4.1.3.2 列表的遍历

        将容器内的元素依次取出进行处理的行为被称为遍历或者迭代。

        对于列表来说,主要有两种遍历方式while循环和for循环,首先介绍while循环,具体格式和示例如下:

index = 0
while index < len(列表名):
	元素变量 = 列表名[index]
	循环体
	index += 1

# while循环遍历
names = ['张三', '李四', '王五']
# 定义变量作为索引使用,注意初始值必须是0
index = 0
# 条件判断
while index < len(names):
    # 循环体
    name = names[index]
    print(name)
    # 条件控制
    index += 1

        For循环的具体格式和示例如下:

for 元素变量 in 列表名:
	循环体

# for循环遍历
names = ['张三', '李四', '王五']
for name in names:
    print(name)

        While循环和for循环,都是循环语句,但以下的细节方面有一些不同:

        在循环控制上: while循环可以自定循环条件,并自行控制;而for循环不可以自定循环条件,只可以一个个从容器内取出数据。

        在无限循环上: while循环可以通过条件控制做到无限循环;而for循环理论上不可以,因为被遍历的容器容量不是无限的。

        在使用场景上: while循环适用于任何想要循环的场景;for循环适用于,遍历数据容器的场景或简单的固定次数循环场景。

4.2 元组

4.2.1 元组的定义

        元组和列表极为相似,都是可以封装多个不同类型的元素在其中,但最大的不同点在于:元组一旦定义完成,就不可对其进行修改,因此,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了,此外,元组以小括号()为标识。

        常见的元组定义方式如下:

# 定义空元组
t1 = ()
t2 = tuple()

# 定义非空元组
t3 = (10, 20, 3.14, True, '你好')
# 注意: 如果元组只有一个元素,必须在该元素后添加一个逗号
t4 = (10,)

# 元组嵌套
t5 = (t1, t2, t3, t4)

        与列表相同,元组中的元素也是有序的、且允许重复数据存在。

4.2.2 元组的常用操作

4.2.2.1 元组的查询和删除

        由于元组不可修改的特性,元组没有添加元素以及修改元素的操作,但元组和列表一样也支持下标索引操作,可以使用索引取出相应位置的单个元素,此外,元组也支持两套索引,正索引即从左到右,从0开始依次递增,负索引即从右到左,从-1开始依次递减。

        对于元组来说查询主要有以下方法:

        元组名[索引]:查询指定索引位置处的元素。

        元组名.count(元素):查询指定元素在元组中出现的次数,注意:如果元素不存在则返回0。

        元组名.index(元素):查询指定元素在元组中出现的索引位置,注意:如果元素不存在会报错,如果有重复元素,则默认返回最靠左的第一个元素的索引位置。

        len(元组名):查询指定元组的元素总个数。

mytup = (1, 2, 3, 3)
print(mytup.count(2))
# 输出1
print(mytup.index(3))
# 输出2
print(len(mytup))
# 输出4

        对于元组来说删除主要有以下方法:

        del 元组名:删除整个元组。

4.2.2.2 元组的遍历

        与列表相同,元组也支持while循环和for循环两种遍历方式,具体格式和示例如下:

# while循环格式
index = 0
while index < len(元组名):
	元素变量 = 元组名[index]
	循环体
	index += 1

# while循环示例
names = ('张三', '李四', '王五')
index = 0
while index < len(names):
    name = names[index]
    print(name)
    index += 1

# for循环格式
for 元素变量 in 元组名:
	循环体

# for循环示例
names = ('张三', '李四', '王五')
for name in names:
    print(name)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top