Python学习笔记(十九) 元组
Python3元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改或删除。
元组使用小括号(),列表使用方括号[]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
实例(Python 3.0+)
创建空元组
tup1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
实例(Python 3.0+)
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
访问元组
元组可以使用下标索引来访问元组中的值,如下实例:
实例(Python 3.0+)
以上实例输出结果:
修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
实例(Python 3.0+)
以上实例输出结果:
删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
实例(Python 3.0+)
以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
Python 表达式 |
结果 |
描述 |
len((1, 2, 3)) |
3 |
计算元素个数 |
(1, 2, 3) + (4, 5, 6) |
(1, 2, 3, 4, 5, 6) |
连接 |
('Hi!',) * 4 |
('Hi!', 'Hi!', 'Hi!', 'Hi!') |
复制 |
3 in (1, 2, 3) |
True |
元素是否存在 |
for x in (1, 2, 3): print (x,) |
1 2 3 |
迭代 |
元组索引,截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
元组:
Python 表达式 |
结果 |
描述 |
tup[1] |
'Runoob' |
读取第二个元素 |
tup[-2] |
'Weibo' |
反向读取,读取倒数第二个元素 |
tup[1:] |
('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin') |
截取元素,从第二个开始后的所有元素。 |
tup[1:4] |
('Runoob', 'Taobao', 'Wiki') |
截取元素,从第二个开始到第四个元素(索引为 3)。 |
运行实例如下:
实例
元组内置函数
Python元组包含了以下内置函数
序号 |
方法及描述 |
实例 |
1 |
len(tuple) |
>>> tuple1 = ('Google', 'Runoob', 'Taobao') >>> len(tuple1) 3 >>> |
2 |
max(tuple) |
>>> tuple2 = ('5', '4', '8') >>> max(tuple2) '8' >>> |
3 |
min(tuple) |
>>> tuple2 = ('5', '4', '8') >>> min(tuple2) '4' >>> |
4 |
tuple(iterable) |
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Runoob', 'Baidu') |
5 |
count(x) 计算元组中x出现的次数。 |
>>> tuple1 = (1, 2, 3, 4, 3, 2, 1) >>> tuple1.count(3) 2 |
6 |
index(x) 在元组中查找x的下标。 |
>>> tuple1.index(4) 3 |
关于元组是不可变的
所谓元组的不可变指的是元组所指向的内存中的内容不可变。
从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象。
'''
Python3元组:
Python的元组与列表类似,不同之处在于元组的元素不能被修改或删除
元组使用小括号,列表使用方括号
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
'''
tup1 = ('Google', 'Runoob', 1998, 2020)
tup2 = (1, 2, 3, 4, 5)
tup3 = 'a', 'b', 'c', 'd' # 不使用括号也可以
print('tup1 ------->', tup1)
print('tup2 ------->', tup2)
print('tup3 ------->', tup3)
### 创建空元组
tup4 = ()
print('tup4 ------->', tup4, '\t', type(tup4))
# 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
tup5 = (50)
tup6 = (50,)
print('tup5 ------->', tup5, '\t', type(tup5)) # 不加逗号,类型为整型
print('tup6 ------->', tup6, '\t', type(tup6)) # 加上逗号,类型为元组
### 访问元组
# 元组可以使用下标索引来访问元组中的值
tup7 = ('Google', 'Runoob', 1998, 2020)
tup8 = (1, 2, 3, 4, 5, 6, 7)
print('tup7 -------> tup7[0]:', tup7[0])
print('tup8 -------> tup8[1 : 5]:', tup8[1 : 5])
### 修改元组
# 元组中的元素值是不允许修改的,但可以对元组进行连接组合
tup9 = (12, 34, 56)
tup10 = ('abc', 'xyz')
# 以下修改元组元素操作是非法的
# tup9[0] = 100
# 创建一个新的元组
tup11 = tup9 + tup10
print('tup11 ------>', tup11)
### 删除元组
# 元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组
tup12 = ('Google', 'Runoob', 1998, 2020)
print('tup11 ------>', tup12)
del tup12
print('删除后的元组tup12: ', tup12) # 以上元组被删除后,输出变量会有异常信息:NameError: name 'tup12' is not defined### 元组运算符
# 与字符串一样,元组之间可以使用+号和*号进行运算,这就意味着它们可以组合和复制,运算后会生成一个新的元组
tup_len = len((1, 2, 3))
print('tup_len = ', tup_len)
tup_sum = (1, 2, 3, 4, 5)
print('tup_sum = ', sum(tup_sum))
tup_plus = (1, 2, 3) + (4, 5, 6)
print('tup_plus = ', tup_plus)
tup_multiply = ('HI.') * 4
print('tup_multiply = ', tup_multiply)
tup_in = 3 in (1, 2, 3)
print('tup_in = ', tup_in)
print('tup_iteration = ')
for x in (1, 2, 3):
print(x)
print('----- 分割线 -----')
### 元组索引,截取
# 因为元组也是一个序列,所以可以访问元组中的指定位置的元素,也可以截取索引中的一段元素
L = ('Google', 'Taobao', 'Runoob')
print('元组L = ', L)
print('L[2] = ', L[2])
print('L[-2] = ', L[-2])
print('L[1 : ] = ', L[1 : ])
### 元组内置函数
# len(tuple):计算元组元素个数
tuple1 = ('Google', 'Runoob', 'Taobao')
print('len(tuple) = ', len(tuple1))
# max(tuple):返回元组中元素最大值
tuple2 = ('5', '4', '8')
tuple3 = (5, 4, 8)
print('max(tuple) = ', max(tuple2))
print('max(tuple) = ', max(tuple3))
# min(tuple):返回元组中元素最小值
tuple4 = ('5', '4', '8')
tuple5 = (5, 4, 8)
print('min(tuple) = ', min(tuple4))
print('min(tuple) = ', min(tuple5))
# tuple(iterable):将可迭代系列转换为元组
list1 = ['Google', 'Taobao', 'Runoob', 'Baidu']
print('list1 = ', list1)
tuple6 = tuple(list1)
print('tuple(list1) = ', tuple6)
### 关于元组是不可变的
# 所谓元组的不可变指的是元组所指向的内存中的内容不可变
tup = ('r', 'u', 'n', 'o', 'o', 'b')
print('tup = ', tup)
# tup[0] = 'g' # 元组不支持修改元素:TypeError: 'tuple' object does not support item assignment
print('id(tup) = ', id(tup))
tup = (1, 2, 3)
print('id(tup) = ', id(tup)) # 地址不一样了
# 以上示例可以看出,重新赋值的元组tup,绑定到新的对象了,不是修改了原来的对象
Python元组推导式
元组推导式的语法格式如下:
(表达式 for 迭代变量 in 可迭代对象 [if条件表达式]) # []中内容为可选
通过和列表推导式做对比,你会发现,除了元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是 [],其它完全相同。不仅如此,元组推导式和列表推导式的用法也完全相同。
''
元组推导式:
元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
''
注意:
无论是使用for循环遍历生成器对象,还是使用__next__()方法遍历生成器对象,遍历后,原生成器对象将不复存在,这就是遍历后转换原生成器对象却得到空元组的原因。
组包与解包
- 点赞
- 收藏
- 关注作者
评论(0)