【引言】元组是不变的:元组就像是一个一旦创建(并填充数据)就不能改变的列表。那么,为什么还需要元组呢?事实上,有一个不可变的数据结构非常有用。假设要保证没有副作用,确保程序中的一些数据永远不会改变。或者你可能有一个很大的常量列表(你知道它不会改变),而且你很关心性能。既然不需要那些额外的(可变)列表处理代码,又何必引入这些代码的开销呢?在这种情况下,使用元组可以避免不必要的开销,并保证没有烦人的数据副作用。
1. 元组的概念
1.元组是一个不可变的列表。这说明,一旦向一个元组赋对象,任何情况下这个元组都不能再改变。
2.通常可以把元组想成是一个常量列表。
2. 元组的创建
如果元组类型中包含可变数据类型(比如列表),可以间接修改元组内容
元组可以为空
元组和列表可以类型转换
元组如果只有一个元素,后面一定要加逗号,否则数据类型不确定
3. 元组的特性
索引
切片
连接
不同的数据类型不可以连接。
重复
for循环
成员操作符
4.元组的方法
查看元组的索引值
查看元素在元组中出现的次数
5.元组的应用场景
变量交换数值
在其他语言中(比如c语言),如果两个变量需要交换数值,最常用的办法就是申请一个临时变量tmp,tmp = a;a = b;b = tmp。但这种办法耗费内存,当然也有数学办法,只不过不好理解,一般人也想不到。但是在python中,变量交换数值只需要一行语句就可以实现。
这一行语句的所做的工作是:
1.先把(a,b)封装成了一个元组 (1,2)
2. b,a = a,b ===> b,a = (1,2)
3. b = (1,2)[0] a =(1,2)[1]
打印变量
元组的赋值:有多少个元素,就用多少个变量接收
元组的排序:sorted方法和.sort方法
第一种方法是把该元组转换成list类型,再调用.sort方法对列表排序
第二种是直接对元组数据执行sorted方法,但是源码内部还是将这个元组转换成了list类型。
比赛计数(魔法变量*argv,在py3中可以使用,在py2中不能使用)
实现:去掉最高分,去掉最低分,求平均
补充:round函数
def round(number, ndigits=None): # real signature unknown; restored from __doc__
"""
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
"""
return 0
scores = (88,86,89,67,77,76,98,86,99,79)
sort_scores = sorted(scores)
low_score,*mid_score,high_score = sort_scores
print('平均分:',sum(mid_score)/len(mid_score))
print('平均分:',round(sum(mid_score)/len(mid_score),2)) ##round()用来保留几位小数点