Python数据类型-元组(tuple)

1. 创建元组

  • 元组(tuple)是一种有序且不可更改的集合,元组中允许存在重复的成员。

  • 创建空元组

  • 在Python中,()表示一个空元组

  • 也可以通过tuple的方式来创建一个空元组

a = ()  
print(type(a)) # <class 'tuple'>  
b = tuple()  
print(type(b)) # <class 'tuple'>
  • 创建非空元组
  • 创建元组时可以在()中设置元组的初始值
  • 元组中存放的元素可以是不同类型的
a = (1, 2, 3)  
print(type(a))  # <class 'tuple'>  
print(a)        # (1, 2, 3)  
  
a = (1, 'hello', [1 ,2])  
print(type(a))  # <class 'tuple'>  
print(a)        # (1, 'hello', [1, 2])

2. 修改元组元素

  • 元组的功能和列表基本是一致的,但元组是一个不可更改的集合,因此元组没有提供任何修改元组的方法。如果想要修改元组中的值,可以将元组转换成列表,更改列表后再将其转换回元组
a = (1, 2, 3, 4)  
tmp = list(a)    # 将元组转换成列表  
tmp[0] = 'hello' # 更改列表  
a = tuple(tmp)   # 将列表转换回元组  
print(a)         # ('hello', 2, 3, 4)

3. 查找元组元素

3.1 in和in not操作符

a = (1, 2, 3, 4)
print(1 in a) # True 
print(10 in a) # False 
print(1 not in a) # False 
print(10 not in a) # True

3.2 index方法

a = (1, 2, 3, 4)  
print(a.index(1))  # 0  
# print(a.index(10))  # 不存在,抛异常
  • 需要注意的是index()中查找的值,返回的是该值在元组中的下标

4. 下标访问元组元素

4.1 下标访问

  • 通过下标访问操作符 [] 可以获取指定下标位置的元素
  • 可以通过下标修改访问到的元素的值
a = (1 ,2 , 3 ,4)  
print(a[1]) # 2  
a[1] = 100  # [1, 100, 3, 4]  
print(a)
  • 如果指定下标的值超过了列表中的最大下标,则会抛出异常。

4.2 负索引

a =  [ 1, 2 ,3,4]  
#正索引 0  1  2  3
#负索引 -4 -3 -2 -1  
print(a[-1]) # 4
  • 不难发现,这里的操作和list中的一样

5. 遍历元组元素

5.1 循环

a = (1, 2, 3, 4)  
  
for i in a:  
    print(i)  
    i = i + 1  # 1 2 3 4  # 不会修改tuple中的值  
  
print(a)  # (1, 2, 3, 4)  
  
for i in range(len(a)):  
    print(a[i])  
print(a)  # (1, 2, 3, 4)  
  
i = 0  
while i < len(a):  
    print(a[i])  # 1 2 3 4  
    i += 1

6. 子元组提取

语法 : [起始下标 : 结束下标]

  • [起始下标 : 结束下标] 的方式可以从元组中提取出,从起始下标开始到结束下标的一组元素。
  • 左闭右开的区间
a = (1,2,3)  
print(a[0:1]) # (1,)  
print(a[0:2]) # (1, 2)
  • 比较特殊的,打印出来的结果如果只有一个值的话还会跟一个逗号
切片时省略边界
  • 提取子元组的过程也叫做切片的过程,以 [起始下标 : 结束下标] 的方式切片时可以省略起始下标或结束下标。
  • 如果以 [起始下标 : ] 的方式进行切片,则子元组中的元素包括起始下标的元素及其后续元素。
  • 如果以 [ : 结束下标] 的方式进行切片,则子元组中的元素包括结束下标之前的所有元素。
  • 如果以 [ : ] 的方式进行切片,则子元组中的元素包括原元组中的所有元素。
a = (1, 2, 3, 4)  
print(a[1:])   # (2, 3, 4)  
print(a[:3])   # (1, 2, 3)  
print(a[:-2])  # (1, 2)  
print(a[:])    # (1, 2, 3, 4)
  • 切片时也可以使用负索引。
切片时指定步长
  • [起始下标 : 结束下标 : 步长] 的方式切片可以指定步长,即每访问一个元素后下标自增几步
a = (1 ,2 ,3 ,4 ,5 ,6 ,7, 8, 9)  
print(a[1::2])   # (2, 4, 6, 8)  
print(a[1::-1])  # (2, 1)  
print(a[1:-1:1]) # (2, 3, 4, 5, 6, 7, 8)  
print(a[-1:1:-1])# (9, 8, 7, 6, 5, 4, 3)  
print(a[1:1000]) # (2, 3, 4, 5, 6, 7, 8, 9) # 越界
  • 切片时指定的步长也可以为负数,这时表示从后往前提取元素
  • 如果切片时填写的下标超出了有效范围,运行程序后不会抛异常,而是尽可能把符合要求的元素提取出来

7. 拼接元组

7.1 使用 + 拼接列表

  • 使用+可以把两个元表拼接在一起
  • 使用+拼接后会生成一个新的列表,该操作不会影响两个原有列表。
  • 使用+=也可以把一个列表拼接到另一个列表的后面
a = (1 ,2 ,3)  
b = (3 ,4 ,5)  
c = a + b  
print(c) # (1, 2, 3, 3, 4, 5)  
print(a) # (1, 2, 3)  
a += b  
print(a) # (1, 2, 3, 3, 4, 5)
  • 元组是一个不可更改的集合,因此元组没有提供extend方法将一个元组拼接到另一个元组后面。

标题

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值