赞
踩
一. 元组的引入
1 元组的定义:元组是一种不可变的序列类型
元组可以看作是不可变的列表,它具有列表的大多数特点。元组常量用圆括号表示,例如,(1,2)、(‘a’,‘b’,‘abc’)。
元组没有列表中那么多方法可以使用,因为不可变,所以安全,速度比列表快。
元组的主要特点如下。
元组可包含任意类型的对象。
元组是有序的。元组中的对象可通过位置进行索引和分片。
元组的大小不能改变,既不能为元组添加对象,也不能删除元组中的对象。
元组中的对象不能改变。
元组中存储的是对象的引用,而不是对象本身。
2 元组的基本操作包括:创建元组、求长度、合并、重复、迭代、关系判断、索引和分片等。
二.元组的创建
1 元组特点:定义元组使用 小括号 ,且 逗号 隔开各个数据,数据可以是不同的数据类型。
在这里插入代码片
t1 = tuple() # 创建空元组对象
# 多个数据元组
t2 = (10, 20, 30)
# 单个数据元组
t3 = (10,)
**注意**:如果定义的元组只有一个数据,那么这个数据后面也好添加逗号,否则数据类型为唯一的
这个数据的数据类型
注意元组中的字符串的输出
在这里插入代码片
t5 = tuple('hello')
print(t5) # 输出 ('h', 'e', 'l', 'l', 'o')
2 元组取值与切片
元组的取值、切片与列表时一样使用
不能对元组的元素进行删除,但是可以删除整个元组:
在这里插入代码片 In [1]: t = tuple("01234") In [2]: t Out[2]: ('0', '1', '2', '3', '4') # 直接获取 In [3]: t[0] Out[3]: '0' In [4]: t[-1] Out[4]: '4' # **不能修改** In [5]: t[0] = 1 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-c8aeb8cd20ae> in <module> ----> 1 t[0] = 1 TypeError: 'tuple' object does not support item assignment In [6]: t[0:5] Out[6]: ('0', '1', '2', '3', '4')
3 元组的常见操作
元组对象常支持两个方法:count()和index()。
index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同。
在这里插入代码片
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa')) # 0
count():统计某个数据在当前元组出现的次数。
在这里插入代码片
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb')) # 2
len():统计元组中数据的个数。
在这里插入代码片
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1)) # 4
但是如果元组里面有列表,修改列表里面的数据则是支持的
在这里插入代码片
tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tuple2[2]) # 访问到列表
# 结果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)
tuple2[2][0] = 'aaaaa'
print(tuple2)
# 结果: (10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)
三.元组和列表的区别
1 元组的特点
元组一旦定义就不允许更改。
元组没有 append() 、 extend() 和 insert() 等方法,无法向元组中添加元素。
元组没有 remove() 或 pop() 方法,也无法对元组元素进行 del 操作,不能从元组中删除元素。
从效果上看, tuple() 冻结列表,而 list( ) 融化元组。
2 元组的优点
Ⅰ元组的速度比列表更快快快快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用
Ⅱ元组而不用列表。
Ⅲ元组对不需要改变的数据进行 “写保护” 将使得代码更加安全。
Ⅳ元组可用作字典的“键”,也可以作为集合的元素。列表永远不能当做字典键使用,也不能作为集合的元素,因为列表不是不可变的。
Ⅴ不可变
四.拓展-列表推导式
1 作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。
列表推导式又叫列表生成式。
2案例
需求:创建一个0-10的列表。
方法1 while循环实现
在这里插入代码片
# 1. 准备一个空列表
list1 = []
# 2. 书写循环,依次追加数字到空列表list1中
i = 0
while i < 10:
list1.append(i)
i += 1
print(list1)
方法2 for循环实现
在这里插入代码片
list1 = []
for i in range(10):
list1.append(i)
print(list1)
方法3 列表推导式实现
在这里插入代码片
list1 = [i for i in range(10)]
print(list1)
3 带 if 的列表推导式案例
需求:创建 0-10 的偶数列表
方法一:range() 步长实现
在这里插入代码片
list1 = [i for i in range(0, 10, 2)]
print(list1)
方法二:if实现
在这里插入代码片
list1 = [i for i in range(10) if i % 2 == 0]
print(list1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。