文章目录
个人主页:丷从心.
系列专栏: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])
('吴', '周', '李', '孙', '钱', '赵')
遍历元组
什么是遍历
- 遍历就是通过循环的方式从
string
、list
、tuple
、dict
、set
等序列数据类型中依次获取元素,这个过程称为遍历
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]
处的元素是一个列表,是可变类型对象,可以修改其中的元素
标签:last,tuple,Python,基础,元组,索引,names,print From: https://blog.csdn.net/from_2024_04_01/article/details/137406522