一、元组tuple
列表属于可变序列,可以任意修改列表中的元素。
元组属于不可变序列,不能修改元组中的元素。
因此,元组没有增加元素、修改元素、删除元素相关的方法。
二、元组的创建
2.1、使用()方式创建元组
使用圆括号
()
可以创建一个元组,元素之间用逗号,
分隔。
格式: 元组名 = (元素1, 元素2, 元素3, ... 元素N)
# 创建一个包含多个元素的元组
tuple1 = (1, 2, 3)
print(tuple1) # 输出: (1, 2, 3)
2.2、使用逗号创建元组
除了使用
()
外,还可以仅使用逗号,
来创建元组。
格式:
元组名 = 元素1, 元素2, 元素3, ... 元素N
PS: python语言中无法给一个变量同时赋多个值,所以会将其值 打包成一个元组.
# 使用逗号直接创建元组
tuple2 = 4, 5, 6
print(tuple2) # 输出: (4, 5, 6)
2.3、创建单个元素的时候
python语言在创建元组的时候,如果元组里面只有一个值,这个时候就需要在 创建的时候添加 ','. 才能表示元组
# 创建单个元素的元组
single_element_tuple = (7,) # 注意逗号
print(single_element_tuple) # 输出: (7,)
# 如果没有逗号,则不是元组
not_a_tuple = (8) # 没有逗号
print(type(not_a_tuple)) # 输出: <class 'int'>
2.4、元组生成式
在 Python 中,没有直接的元组生成式的语法,但可以通过生成器表达式搭配
tuple()
函数来生成元组。这类似于列表生成式。
语法格式:
元组名 =tuple (expression for x in expression)
# 使用生成器生成元组
tuple3 = tuple(x * 2 for x in range(5))
print(tuple3) # 输出: (0, 2, 4, 6, 8)
2.5、生成器推导式创建元组
从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。
列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。
我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的
__next__()
方法进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
#列表推导式: [0, 2, 4, 6, 8]
a = [x*2 for x in range(5)]
print(a)
s = (x*2 for x in range(5))
print(s) # <generator object <genexpr> at 0x0000016CCC912A80>
b = tuple(s)
print(b) #(0, 2, 4, 6, 8)
c = tuple(s)
print(c) #()
s2 = (x for x in range(3))
print(s2.__next__()) #0
print(s2.__next__()) #1
print(s2.__next__()) #2
print(s2.__next__()) #报错:StopIteration
三、元组的基本操作
3.1、元组的访问
简介:
python语言中对于元组来说也提供了两种访问的方式: 索引与切片
索引:
格式: 元组名[索引值]
ps: python语言中索引是支持负下标的
从左到右: 下标是从 0 开始的
从右到左: 下标是从-1 开始的
切片:
元组的切片与列表的切片是一致的 tuple[初始位置: 终止位置: 步长]
3.1.1、 索引
tuple_example = (10, 20, 30, 40, 50)
print(tuple_example[0]) # 输出: 10
print(tuple_example[-1]) # 输出: 50
3.1.2、 切片
tuple_slice = (1, 2, 3, 4, 5)
print(tuple_slice[1:4]) # 输出: (2, 3, 4)
print(tuple_slice[::2]) # 输出: (1, 3, 5)
3.2、元组的连接操作
可以通过
+
运算符连接两个或多个元组,生成一个新的元组。
tuple_a = (1, 2)
tuple_b = (3, 4)
combined_tuple = tuple_a + tuple_b
print(combined_tuple) # 输出: (1, 2, 3, 4)
3.3、索引index()
使用
index()
方法可以返回指定元素在元组中第一次出现的位置(索引值)。
tuple_index = (10, 20, 30, 10)
print(tuple_index.index(10)) # 输出: 0
3.4、元组的计数count()
count()
方法返回指定元素在元组中出现的次数。
tuple_count = (1, 2, 1, 3, 1)
print(tuple_count.count(1)) # 输出: 3
3.5、元组长度len()
使用
len()
函数可以获取元组中元素的数量。
my_tuple = (1, 2, 3, 'a')
length = len(my_tuple) # 结果: 4
3.6、最大值max()
max()
函数返回元组中的最大值。
tuple_max = (5, 10, 15, 3)
print(max(tuple_max)) # 输出: 15
3.7、最小值min()
min()
函数返回元组中的最小值。
tuple_min = (10, 20, 5, 30)
print(min(tuple_min)) # 输出: 5
3.8、求和sum()
sum()
函数返回元组中所有元素的和。
tuple_sum = (1, 2, 3, 4, 5)
print(sum(tuple_sum)) # 输出: 15
3.9、成员资格判断所要查找的元素是否在元组里面
可以使用 in , not in关键字来判断某个元素是否在元组中。
tuple_membership = (1, 2, 3, 4)
print(2 in tuple_membership) # 输出: True
print(5 in tuple_membership) # 输出: False
3.10、比较运算操作
可以直接比较两个元组,比较是逐元素的。
tuple_x = (1, 2, 3)
tuple_y = (1, 2, 4)
print(tuple_x < tuple_y) # 输出: True,因为 3 < 4
3.11、排序
列表关于排序的方法list.sorted()是修改原列表对象,元组没有该方法。如果要对元组排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象。
a = (20,10,30,9,8)
b = sorted(a) #b是新对象,内容是:[8, 9, 10, 20, 30]
3.12、总结、
元组的核心特点是:不可变序列。
元组的访问和处理速度比列表快。
与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。