1.一个有序的元素组合成的集合
2.使用()表示
3.元组是不可变对象
t3=(1,)表示的是一个元素
4.一旦赋值不可相加
1.tuple() -> empty tuple
2.tuple(iterable)-> tuple initiialized from iterable's items
t = tuple # 工厂方法
t = ()
t = tuple(range(1,7,2)) #iterable
t = (2,4,6,3,2)
t = (1,) # 一个元素元组的定义注意有逗号
t = (1,)*5
t = (1,2,3)*6
1.支持索引(下标)
2.正索引:从左至右,从0开始,为列表中的每一个元素编号
3.负索引:从右至左,从-1 开始
4.正负索引不可以超界,否则引发异常InderError
5.元素通过索引访问
tuple[index],index就是索引,使用中括号访问
1.index(value,[start,[stop]])
(1)通过值value,从指定区间查找列表内的元素是否匹配
(2)匹配第一个就立即返回索引
(3)匹配不到抛出异常ValueError
2.cont(value)
(1)返回列表中匹配Value的次数
3.时间复杂度
(1)index和count方法都是O(n)
(2)随着列表数据规模的增大,而效率下降
4.len (tuple)
(1)返回元素的个数
元组是只读的,所以增、删、改方法都没有
namedtuple(typname,field_name,verbose=False,rename=False)
(1)命名元组,返回一个子类,并定义了字段
(2)field_nameds可以是空白字符或者逗号分割开的字段的字符串,可以是字段的列表
from collections import namedtuple
Point = namedtuple('Point',['x','y']) #Point为返回的类
p=Point(11,22)
Student = namedtuple('Student','name age')
tom = Student('tom',20)
jerry = Student('jerry','18')
print(tom.name,jerry.age)
(3)如同元组一样,命名元组的属性们的值不可变
1.属于交换排序
2.两两比较大小,交换位置,如同水咕嘟咕嘟冒泡往上窜
3.结果分为升序和降序排列
n个数从左至右,编号从0开始到n-1,索引0和1的值比较,如果索引0大则两者交换位置,
如果索引1大则不交换。继续比较索引1和2的值,将大值放在右侧,知道n-1和n-2比
较完,第一轮比较完,第二轮从索引0比较到n-2,因为最右侧n-1的位置上已经是最大值
,以此类推,每一轮都会减少最右侧的不参与比较,至只剩下最后两个数比较
降序和升序相反
1. 冒泡法需要数据一轮一轮的比较
2.可以设定一个标记判断次轮是否有数据交换发生,如果没有发生数据交换可以结束排序,
如果发生交换继续进行下一轮数据排序
3.最差的排序情况是,初始顺序与目标顺序完全相反,遍历次数1......(n-1)之和n(n-1)/2
4.最好的排序情况是,初始顺序与目标顺序完全相同,遍历次数n-1
5.时间复杂度O(n**2)
1.一个个字符串组成的有序的序列,是字符的结合
2.使用单引号、双引号、三引号引住的字符序列
3.字符串是不可变对象
4.Python3起字符串就是Unicode类型,
1. 字符串支持使用索引访问
2.有序的字符结合,字符序列
3.可迭代
1.将可迭代对象连接起来,使用string作为分隔符
2.可迭代对象本身元素都是字符串
3.返回一个新字符串
1.将两个字符串连接起来
2.返回一个新字符串
1. 将字符串按照分隔符分割成若干字符串,并立即返回列表
1.从左至右
2.sep 指定分割字符串,缺省情况下空白字符串作为分隔符
3.maxsplit 指定分割次数,-1表示遍历整个字符串
1.从右向左开始切,但是输出的字符串字符不会反
2.sep指定分割字符串,缺省的情况下空白字符串作为分隔符
3.maxsplit 指定分隔的次数,-1表示遍历整个字符串
1.按照行来切分字符串
2. keepens 指定的是是否保留行分隔符
3.分隔符包括\n、\r\n、\r等
2. 将字符串按照分隔符分割成两段,返回这两段和分隔符的元组
1.从左至右,遇到分隔符就把字符串分割成两部分,返回 头、分隔符、尾三部分的三元组:
如果没有找到分隔符,就返回头、两个空元素的三元组
2.sep 分割字符串,必须指定
:如果没有找到分隔符,就返回两个空元素和尾的三元组
全大写
全小写
交换大小写
标题的每个单词都大写
首个单词大写
width 打印宽度,居右左边用0填充
1.字符串中找到匹配替换为新字符串,返回新字符串
2. count表示替换几次,不指定就是全部替换
1.从字符串两短去除指定的字符集chars中的所有字符
2.如果chars没有指定,去除两端的空白字符
从左开始
从右开始
1.find(sub[,start[,end]]) -> int
在指定区间[start,end),从左至右查找子串sub。找到返回正索引,没找到返回-1
1.rfind(sub[,start[,end]]) -> int
在指定区间[start,end),从左至右查找子串sub。找到返回正索引,没找到返回-1
1.字符串格式化是是一种拼接该字符串输出样式的手段,更灵活方便
(1)join拼接只能使用分隔符,且要求被拼接的是可迭代对象且其元素是字符串
(2)+ 拼接字符串还算方便,但是非字符串需要转换为字符串才能拼接
s调用str(),r会调用repr()。所有兑现个都可以背这两个转换
1.占位符中还可以插入修饰字符,例如%03d表示打印三个位置,不够前面补零
2.format % values,格式字符串和被格式的值之间使用 % 分隔
3.values 只能是一个对象,或是一个与格式字符串占位符数目相等的元组,或一个字典
“{} {xxx}”.format(*args,**kwargs) ->str
1.args 是一个可变位置参数,是一个元组
2.kwargs 是可变关键字参数,是一个字典
3.花括号表示占位符
4.{}表示按照顺序匹配位置参数,(n)表示取位置参数为N的值
5.{xxx}表示在关键字参数中搜索名称一致的
6.{{}}表示打印花括号
(1)位置参数
"{}:{}".format('192.168.1.100'.8888),这就是按照位置顺序用位置参数替换前面的
格式字符串的占位符中的内容
(2)关键字参数或者命名参数
"{server}{1}:{0}".format(8888.'192.168.1.100',server='Web Server info:'),
位置参数按照序号匹配,关键字参数按照名词匹配
(3)访问元素
"{0[0]}.{0[1]}".format(('magedu'.'com'))
(4) 对象属性访问
from colletions import namedtuple
Point = namedtuple('Point','x y')
p=Point(4,5)
"{{{0.x},{0.y}}}".format(p)
(5) 对齐
'{}*{}={2:<2}'.format(3,2,2*3)
'{}*{}={2:<02>}'.format(3,2,2*3)
'{}*{}={2:>02}'.format(3,2,2*3)
'{:*^30}'.format('centered')
'{:^30}'.format('centered')
(6)进制
"int{0:d};hex:{0:x};otc:{0:o};bin:{0:b}".format(42)
"int{0:d};hex:{0:#x};otc:{0:#o};bin:{0:#b}".format(42)
octtets = [192.168.0.1]
'{:02x}{:02x}{:02x}{:02x}'.format(*octets)
(7) 浮点数,宽度会撑破