元组与列表相似,不同的是元组内的元素不可更改
列表与元组可以相互转换
使用元组的好处
tup=(1,2)
tup1=(1,)
tup2=('a','b','c')
元组的创建只需在小括号内添加由逗号分割的元素即可
注:当元组内只有一个元素时,需在元素后加逗号否则类型不明确
如下
tup=(1)
tup1=(1,)
print(type(tup))
print(type(tup1))
<class 'int'>
<class 'tuple'>
元组内的元素可以通过索引值或切片访问
tup=(1,2,3,4,5)
print("第一个元素是:",tup[0])
print("第一个到第三个元素是,",tup[:3])
print("该元组为:",tup)
运行结果如下
第一个元素是: 1
第一个到第三个元素是, (1, 2, 3)
该元组为: (1, 2, 3, 4, 5)
元组内的元素是不能被修改的,但我们可以创建一个新元组,对需修改元组进行拼接。
tup=('中国','美国','英国','法国')
tup1=('德国','日本','意大利')
tup2=tup1+tup
#tup[1]='加拿大' 错误 元组元素不可被修改
print(tup2)
运行结果如下
('德国', '日本', '意大利', '中国', '美国', '英国', '法国')
元组内的元素不可修改自然也不可删除,但是我们可以使用del 方法删除整个元组
tup=('中国','美国','英国','法国')
print(tup)
del tup
print(tup)
运行结果如下
NameError: name 'tup' is not defined #这里已经删除整个元组,tup已经被回收
('中国', '美国', '英国', '法国')
cmp(tuple1, tuple2) (!!python2下内置方法) | 比较两个元组元素 |
---|---|
operator.eq(tup,tup2) (python3下内置方法) | 比较两个元组元素 |
len(tuple) | 计算元组元素个数 |
max(tuple) | 返回元组中元素最大值 |
min(tuple) | 返回元组中元素最小值 |
tuple(seq) | 将列表转换为元组 |
在python2 中内置比较方法为cmp(tuple1,tuple2) ,在python3中取消了该方法,取而代之的是operator.eq(),使用时需导入operator 库
这里使用python3为例
import operator
tup=(1,2,3)
tup_1=(1,2,4)
tup1=('a','b','c')
tup1_1=('a','c','b')
tup1_2=('a','b','c','d')
tup2=("hello",)
tup2_1=("halo",)
print(operator.eq(tup,tup_1)) #数字与数字
print(operator.eq(tup1,tup1_1))#字符与字符
print(operator.eq(tup1,tup1_2))#字符与字符
print(operator.eq(tup2,tup2_1))#字符串与字符串
print(operator.eq(tup,tup2_1))#数字与字符串
混合元组之间也可以相互比较
运行结果如下
False
False
False
False
False
tup=(1,2,3,4,5)
print(len(tup))
运行结果如下
5
tup=(1,2,3,4,5)
tup1=('a','b','c','c')
tup2=('hello','helloa','halo')
print(max(tup))
print(max(tup1))
print(max(tup2))
运行结果如下
5
c
helloa
list1=[1,2,3,4]
print(tuple(list1))
运行结果如下
(1, 2, 3, 4)
与列表推导式相同,元组也有推导式,用于批量生成有一定规律的元素并放入元组内
tup1=(x for x in range(10) if x%2==0)
print(tup1)
print(tuple(tup1))
运行结果如下
at 0x000002060A70B408>
(0, 2, 4, 6, 8)
注:用推导式直接生成的是迭代器
需要转换为tuple类型