2019-04-26第三节-元组tuple
元组tuple
一个有序的元素组成的集合
使用小括号()表示
元组是不可变对象
元组的定义,初始化
定义
tuple()->empty tuple
tuple(iterable)->tuple initialized from iterable's items
t =tuple() #工厂方法
t = ()
t = tuple(range(1,7,2))
t = (2,4,6,3,4,2)
t = (1,) #一个元素元组的定义
t = (1,)*5
t = (1,2,3)*6 #重复前面元组6次
元组元素的访问
支持索引(下标)
正索引:从左至右,从0开始,为列表每一个元素编号
负索引:从右至左,从-1开始
正负索引不可以超界,否则引起异常indexError
元组通过索引访问
tuple[index],index就是索引,使用中括号访问
t[1]
t[-2]
元组查询
index(value,[start,stop])
通过值value,从指定区间查找列表内的元素是否匹配
匹配第一个立即返回索引
匹配不到,抛出异常valueError
count(value)
返回列表中匹配value的次数
时间复杂度
index和count方法都是O(n)
随着列表数据规模的增大,而效率下降
len(tuple)
返回元素的个数
元组其他操作
元组是只读的,所以增、改、删无法操作
命名元组namedtuple
帮助文档中,查阅namedtuple,有使用例程
namedtuple(typename,field_names,verbose=False,rename=False)
命名元组,返回一个元素的子类,并定义了字段
field_names可以是空格或者逗号分隔的字段字符串,可以是字段的列表
from conllections import namedtuple
Point = namedtuple('P','x,y')
p1 = Point(11,22)
Student = namedtuple('Student','name age')
tom = Student('tom',20)
jerry = Student('jerry',19)
tom.name
练习:
依次接收用户输入的3个数,排序后打印
转换int后,判断大小排序
使用max函数
使用列表的sort方法
冒泡法
1、if ...else
2.tuple
冒泡法:
冒泡法需要数据一轮轮比较
可以设定一个标记判断比较此轮是否有数据交换发生,如果没有发生交换,可以结束排序,如果发生变化,继续下一轮排序
最差的排序情况是,初始顺序与目标顺序完全相反,遍历次数1,。。。。n-1之和n(n-1)/2
最好的排序情况,初始顺序和目标顺序完全相同,遍历次数n-1
时间复杂度O(N²)