##元组冒泡法及字符串处理
元组tuple:
- 不可变对象,有序的序列。
- 使用()表示
- 空元组基本没用,因为不可变
- 当元组只有一个元素时请用(1,)
- 支持索引(下标)
- 支持正负索引,索引不可以越界,否则引发异常indexerror
- tuple[index],index就是索引,使用中括号访问。
- index(value,[start,[stop]])
- 通过值value,从指定区间查找列表内的元素是否匹配
- 匹配到第一个就立即返回索引
- 匹配不到,抛出异常valueerror
- count(value):返回列表中匹配value的次数
- 时间复杂度:index和count都是O(n),随着元组元素的规模的增大,而效率下降。
- len(tuple):返回元素的个数
- 元组是只读的,所以增删改方法都没有。可以理解成权限更低的列表。
- 元组节约内存,比列表
- 目的:不让其他人改变元素,可当做只读列表
- 引用类型可以变,相当于换了一件衣服:例如:t=(1,[2,3],4):此处23可以修改
- 目的:如果tuple中的元素很多的时候操作起来就比较麻烦,有可能会由于索引错误导致出错。namedtuple对象就如它的名字说定义的那样,你可以给tuple命名。
- namedtuple方法在collections方法集中,所以使用需要from collections import namedtuple
- namedtuple(typename,field_names,verbose=False,rename=False)
- 命名元组,返回一个元组的子类,并定义了字段
- field_names可以是空格或逗号分割的字段的字符串,可以是字段的列表
练习:
- 依次接受用户输入的3个数,排序后打印:
- 转换int后,判断大小排序
- 使用max函数
- 使用列表的sort方法
- 冒泡法
- 属于交换排序
- 两两比较大小,交换位置。如同水泡咕嘟咕嘟往上冒
- 结果分为升序和降序排列
- 升序:
- n个数从左至右,编号从0开始到n-1,索引0和1的值比较,如果索引0大,则交换两者的位置,如果索引1大,则不交换。继续比较索引1和2的值,将大值放在右侧。直至n-2和n-1比较完,第一轮比较完成。第二轮从索引0比较到n-2,因为最右侧n-1的位置上已经是最大值了,依次类推,每轮都会减少最右侧的不参与比较,直至剩下最后两个数比较。
- 时间复杂度为O(n²)
字符串
- 一个个字符组成有序的序列,是字符的集合
- 使用单引号,双引号,三引号引住的字符序列
- 字符串是不可变对象
- Python3开始,字符串就是Unicode类型
- 使用r/R将字符串中的特殊字符原样输出
举例:
- 下标:字符串支持索引访问
- 有序的字符集合,字符序列
- 可迭代
- “指定分隔符”.join(iterable),用来连接字符串,其他类型不可以。
- 可迭代对象内部必须是简单类型,复杂类型无法执行
举例:
- +:将两个字符串连接在一起,返回一先得字符串
- 1.split:将字符串按照分隔符分割成若干字符串,并返回列表
- split(sep=None,maxsplit=-1)
- 从左至右
- sep指定分割字符串,缺省的情况下空白字符串作为分隔符
- maxsplit指定分割次数,-1表示遍历整个字符串
- rsplit:从右向左
- splitlines([keepends])
- 按照行来切分字符串
- keepends指的是是否保留行分隔符
- 行分隔符包括\n,\r\n,\r等
- split(sep=None,maxsplit=-1)
- 2.partition:将字符串按照分隔符分割成两段,返回这两段和分割符的tuple
- partition(seq)
- 从左至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组;如果没有找到分隔符,就返回头、2个空元素的三元组
- seq分割字符串,必须制定
- rpartition(seq):从右至左,如果没找到分割符就返回两个空元素和尾的三元组
- upper()全大写
- lower()全小写
- swapcase()互换大小写
- replace(old,new[,count]):
- 字符串中找到匹配替换为新字串,返回新字符串
- count表示替换几次,不指定默认全部替换
- strip([chars])
- 从字符串两端去除制定的字符集chars中的所有字符默认两段开始,如果从某一端开始可能会影响结果
- 如果没指定chars,默认去除端的空白字符
- lstrip([chars]):从左开始
- rstrip([chars]):从右开始
- find(sub[,start[,end]]) –>int
- 在指定区间内[start,end),从左到右查找子串sub。找到返回索引,没找到返回-1
- rfind(sub[,start[,end]]):从右往左查
- index(sub[,start[,end]])—>int跟find区别:抛出异常与否.具体使用方法相同
- 在指定区间内[start,end),从左到右,查找子串sub,找到返回索引,没找到抛出异常valueerror
- rindex(sub[,start[,end]]),从右到左
- endswith(suffix[,start[,end]])–>bool
- 在指定区间[start,end),字符串是否是suffix结尾
- startswith(prefix,[,start[,end]])–>bool
- 在指定区间xxx,字符串是否已prefix结尾
- isalnum()–>bool是否是字母和数字组成
- isalpha():是否是字母
- isdecimal()是否只包含十进制数字
- isdigit()是否全部数字(0-9)
- isidentifier()是不是字母和下划线开头,其他都是字母数字,下划线
- islower()是否都是小写
- isupper()是否都是大写
- isspace()是否只包含空白字符
- 字符串的格式化是一种拼接字符串输出样式的手段,更方便灵活
- join拼接只能使用分隔符,且要求被拼接的是可迭代对象
- +拼接字符串还算方便,但是非字符串需要先转换成字符串才能拼接
- format函数格式字符串语法
- “{} {xxx}”.format(*args,**kwargs)–>str
- args是位置参数,是一个元组
- kwargs是关键字参数,是一个字典
- 花括号表示占位符
- {}表示按照顺序匹配位置参数,{n}表示取位置参数索引为n的值
- {xxxx}表示在关键字参数中搜索名称一致的
- {{}}表示打印花括号
- 对齐:
- 进制:
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87485