元组(tuple):这是一种长度固定、不可变的对象序列。表示方式:
tup = 4,5,6
print(tup)
#会看到打印
(4, 5, 6)
元组还可以是包含元组的元组,比如:
nested_tup = (4, 5, 6), (7, 8)
print(nested_tup)
#打印结果
((4, 5, 6), (7, 8))
在实际使用过程中,经常需要把数组转化成元组或者把字符串转化成元组,这样就可以直接访问每一个数据或字母了,比如:
tup = tuple([1, 2, 3])
print(tup)
#打印出
(1, 2, 3)
tup = tuple('hello')
print(tup)
#打印
('h', 'e', 'l', 'l', 'o')
#如果通过下标访问,就能拿到下标对应的字母了
print(tup[0])
#打印
'h'
我们上面说到,元组是固定长度,无法改变的序列对象,如果元组包含的对象是数组或者其他对象,是可以改变对象内部数据的,比如:
tup = tuple(['foo', [1, 2], True])
tup[1].append(3)
print(tup)
#打印
('foo', [1, 2, 3], True)
元组还可以使用‘+’号进行拼接:
tup1 = (1, 2, 3)
tup2 = (5, 6)
tup3 = ('hello', 'world')
tup = tup1 + tup2 + tup3
print(tup)
#打印
(1, 2, 3, 5, 6, 'hello', 'world')
元组和整数相乘,得到的结果是翻倍的元组:
tup = (1, 2) * 4
print(tup)
#打印
(1, 2, 1, 2, 1, 2, 1, 2)
#注意,对象自身并没有复制,只是指向它们的引用进行了复制。
在日常使用中,还有一个很重要的功能,就是元组拆包,比如:
tup = (1, 2, 3)
a, b, c = tup
print(a)
#打印
1
#另外一种情况,嵌套元组拆包:
tup = 1, 2, (3, 4)
a, b, (c, d) = tup
print(c)
#打印
3
通过上面拆包,其实可以很简单就做到数据交换功能了:
a, b = 1, 2
print(a, b)
#打印
1, 2
#对两个变量的数据进行交换
b, a = a, b
print(a, b)
#打印
2, 1
#这样可以很容易做到交换了,而不需要第三个临时变量保存数据
最后,我们在Python的函数书写方面,经常需要返回多个结果,我们也可以用到元组:
#从一系列数据中找到最大值和最小值并且返回
def func_max_min(a, b, c, d):
fmax = max(a, b, c, d)
fmin = min(a, b, c, d)
return (fmax, fmin)
元组的方法只有一个,就是count,它可以统计元组中哪个元素的个数:
tup = (1, 2, 2, 2, 3, 4, 5, 2)
print(tup.count(2))
#打印
4