六大数据类型之元组
一、语法
- 用小括号 元素直接逗号隔开。元组有序不可变(元素的位置和元素的数据类型不能变)。
- c=('s') 并不是元组 因为('s')其实是一个表达式。当元组只有一个元素的时候。一定要加个逗号
- 当元祖的元素数据类型是可变的时候。元组的值是可变的。
a = ()
b = (1,)
c = ('s')
d = (a,b,c,[(),{},'test'])
e = [1,2,3]
f = (1,e)
e.append(4)
print(type(a),a)
print(type(b),b)
print(type(c),c)
print(type(d),d)
print(type(f),f)
打印结果:
<class 'tuple'> ()
<class 'tuple'> (1,)
<class 'str'> s
<class 'tuple'> ((), (1,), 's', [(), {}, 'test'])
<class 'tuple'> (1, [1, 2, 3, 4])
二、元组的基本操作
元组因为每一个元素的位置和数据类型不可变。所以只能查询。和列表一样使用索引和分片。
a = ('m','n','x','y','x','x')
print(a[0]) # 查询元组第一个元素
print(a[-1]) # 查询元组最后一个元素
print(a[1:3]) # 分片查询元组部分元素 从下标1开始查询下标3结束遵守左闭右开原则
print(a.index('n')) # 查询元组中某个值第一个匹配项的索引位置
print(a.count('x')) # 统计元素x在元组中出现的次数
打印结果:
m
x
('n', 'x')
1
3
三、其他常用的通用函数
元组的元素是同一种数据类型才能使用最值和排序函数
a = ('m','n','xxx','y','xxx')
print(len(a))
print(max(a))
print(min(a))
打印结果:
5
y
m
四、运算符的使用
算术运算符。
- 元组之间可以相加。元组和数字可以相乘。元组和所有数据类型不能相减相除
a = (1, 2)
b = ('4', '5')
print(a + b)
print(a * 2)
打印结果:
(1, 2, '4', '5')
(1, 2, 1, 2)
比较运算符
- 2个元组值比较是从列表的首项开始比较的。如果第一个元素相等在比较第二个元素。要注意的是需要比较的元素数据类型必须一致。否则不能比较。
a = (3, 2, 3)
b = (4, '5')
c = (2,)
print(a > b)
print(a >= c)
print(b != c)
打印结果:
False
True
True
赋值运算符
- 元组只能使用简单的加法赋值运算符, 以及元组和数字之间的乘法赋值运算符。
a = (1, 2, 3)
b = a
print(b)
a += b
print(a)
a *= 2
print(a)
打印结果如下:
(1, 2, 3)
(1, 2, 3, 1, 2, 3)
(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
逻辑运算符
- 当元组等于空元组时。该元组为False。
a = (1,2)
b = ()
print(a and b)
print(a or b)
print(not b)
print(b and a)
print(b or a)
print(not a)
打印结果:
()
(1, 2)
True
()
(1, 2)
False
成员运算符
- 比较某个对象是否存在列表中
a = 1
b = '33'
c = (1, 2, '3')
d = [1, 2]
print(a in c)
print(b in c)
print(d not in c)
打印结果:
True
False
True
身份运算符
- 判断2个元组指向的是否是同一个对象
- 当分别创建2个元素一致的元组。他们指向的不是同一块内存区域。
- 当先创建一个元组,然后赋值给另外变量。这个时候2个元组指向的内存区域都是一个。当元组中含有可变类型的数据时。修改原元祖的可变元素值。赋值的元素值也会相应的改变
a, b = (1, 2, 3), (1, 2, 3)
print(a is b, id(a), id(b))
c = (1, 2, [11])
d = c
print(c is d, id(c), id(d))
c[2].append(22)
print(c is d)
print(id(c), c)
print(id(d), d)
打印结果:
False 4440391968 4564932144
True 4576781224 4576781224
True
4576781224 (1, 2, [11, 22])
4576781224 (1, 2, [11, 22])