【Python基础】元组(4333字)

因上努力

个人主页:丷从心·

系列专栏:Python基础

学习指南:Python学习指南

果上随缘


什么是元组

  • 如下定义的变量last_names的数据类型是元组
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names)
('赵', '钱', '孙', '李', '周', '吴')
  • 通过type()函数可以查看变量last_names的数据类型
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(type(last_names))
<class 'tuple'>

元组与列表的区别与联系

可变性
  • 列表是可变的,可以通过索引对其进行修改、添加或删除元素
number_list = [1, 2, 3]

number_list[0] = 0

print(number_list)
[0, 2, 3]
  • 元组是不可变的,一旦创建,就不能修改其中的元素
number_tuple = (1, 2, 3)

number_tuple[0] = 0

print(number_tuple)
Traceback (most recent call last):
  File "C:/Users/FOLLOW_MY_HEART/Desktop/Python Basics/【Python基础】元组/test.py", line 3, in <module>
    number_tuple[0] = 0
TypeError: 'tuple' object does not support item assignment
    • 通过索引修改元组的元素时会产生异常
使用场景
  • 由于元组是不可变的,因此在需要存储固定数据信息时,通常会选择使用元组
  • 列表则更适用于需要频繁修改、添加或删除元素的情况
相似性
  • 元组与列表都可以进行索引取值、切片操作和进行遍历

索引

  • 索引就是标记内存空间地址的一个数字,也可以称为下标
  • 对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),索引从 0 0 0开始,在内存中的存储方式如下
索引0索引1索引2索引3索引4索引5
  • 索引也可以为负数,对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),索引为负数时的情况如下
索引-1索引-2索引-3索引-4索引-5索引-6
示例
  • 通过使用[]加上索引的方式获取对应索引处的数据
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[0])
print(last_names[1])
print(last_names[2])
赵
钱
孙
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[-1])
print(last_names[-2])
print(last_names[-3])
吴
周
李
索引越界
  • 索引对应内存地址,是有范围的,对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),其索引范围为 0 0 0 5 5 5,如果使用索引“ 6 6 6”会发生索引越界,产生异常
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[6])
Traceback (most recent call last):
  File "C:/Users/FOLLOW_MY_HEART/Desktop/Python Basics/【Python基础】元组/test.py", line 3, in <module>
    print(last_names[6])
IndexError: tuple index out of range

切片

  • 切片就是截取操作对象中一部分数据的操作,例如对于元组last_names = ('赵', '钱', '孙', '李', '周', '吴'),可以通过切片获取到子元组('赵', '钱', '孙')
语法
tuple_object[起始索引:结束索引:步长]
  • 选取的数据范围从“起始索引”开始,到“结束索引”结束,但不包含结束索引处的数据,即数据只取到结束索引的前一位
  • 步长表示选取数据的间隔,不使用步长时默认步长为 1 1 1
示例
步长为正
  • 选取索引 0 0 0 2 2 2包含的元素(不包含索引 3 3 3处的元素)
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[0:3])
('赵', '钱', '孙')
  • 如果“起始索引”为空则表示起始索引为 0 0 0
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[:3])
('赵', '钱', '孙')
  • 如果“结束索引”为空则表示从起始索引开始一直取到元组末尾
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[3:])
('李', '周', '吴')
  • 选取索引 1 1 1到最后一个元素之前的元素(通过负数索引的方式)
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[1:-1])
['钱', '孙', '李', '周']
  • 2 2 2为步长从元组开头取到元组末尾
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[::2])
('赵', '孙', '周')
步长为负
  • 如果步长为负,表示从右向左选取数据,此时“起始索引”应大于“结束索引”
last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[3:0:-1])
('李', '孙', '钱')
    • 此时从右向左取到的是索引 3 3 3到索引 1 1 1包含的元素,不包含索引 0 0 0处的元素
  • 从元组末尾取到元组开头的元素(元组倒序)

last_names = ('赵', '钱', '孙', '李', '周', '吴')

print(last_names[::-1])
('吴', '周', '李', '孙', '钱', '赵')

遍历元组

什么是遍历
  • 遍历就是通过循环的方式从stringlisttupledictset等序列数据类型中依次获取元素,这个过程称为遍历
for循环遍历
last_names = ('赵', '钱', '孙', '李', '周', '吴')

for last_name in last_names:
    print(last_name)
赵
钱
孙
李
周
吴
while循环遍历
last_names = ('赵', '钱', '孙', '李', '周', '吴')

i = 0
while i < len(last_names):
    print(last_names[i])

    i += 1
赵
钱
孙
李
周
吴
  • len()方法用于获取元组的长度

可变类型与不可变类型

  • 可变类型是指可以修改其值的对象,而不改变其内存地址
  • 不可变类型是指不能修改其值的对象,每次对其进行修改时都会创建一个新的对象
可变类型
  • 可变类型包括列表list、字典dict和集合set
  • 可以添加、删除或修改可变类型对象中的元素,而不会创建新的对象
  • 例如可以通过添加或删除列表中的元素来修改列表的内容,但并没有创建新的列表对象
不可变类型
  • 不可变类型包括整型int、浮点型float、布尔值bool、字符串str和元组tuple
  • 不可变类型的对象一旦创建,就不能修改其内容,如果需要对不可变类型进行修改,实际上是创建了一个新的对象,例如对字符串进行拼接操作时,实际上是创建了一个新的字符串对象
元组中的不可变与可变
  • 不能修改元组中的元素指的是,如果当前元组中的元素是不可变类型对象则不能修改,如果是可变类型对象在不创建新对象的情况下可以修改可变类型对象元素中的值
示例
number_tuple = (1, [2, 3], 4)

number_tuple[1][0] = 0

print(number_tuple)
(1, [0, 3], 4)
  • number_tuple[1]处的元素是一个列表,是可变类型对象,可以修改其中的元素

  • 37
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用多种方法来合并元组。以下是两种常见的方法: 方法一:使用加号运算符(+)将需要合并的元组直接相加。这种方法会创建一个新的元组,而不会修改任何一个原始元组。例如: ``` a = (1,) b = (2,) c = a + b print(c) # 输出:(1, 2) ``` 方法二:使用元组的内置方法__add__(),将需要合并的元组作为参数传递给该方法。如果需要合并多个元组,可以使用列表或元组将它们打包起来,然后通过for循环来迭代添加。例如: ``` lst = [(1,), (2, 3), (5, 6)] result = tuple() for i in lst: result = result.__add__(i) print(result) # 输出:(1, 2, 3, 5, 6) ``` 以上是两种常见的合并元组的方法。无论使用哪种方法,都可以实现元组的合并操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python元组合并成一个的两种方法](https://blog.csdn.net/weixin_47378963/article/details/130334305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python程序基础:列表和元组.pptx](https://download.csdn.net/download/u011062044/85560904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python温习(六)——元组操作](https://blog.csdn.net/tandelin/article/details/103591158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值