亲子网站源码,wordpress音乐插件mp3,网店运营实训报告,适合医药公司做网站的图片list dict str 这三种类型是python中最常用的几种数据类型。他们都是序列的一种 ■ 序列通用操作 1. 分片 s[a:b] 返回序列s中从s[a]到s[b-1]的片段。注意s[0:0]是空集而不是s[0] s[a:b:c] 加入第三个参数以设置取样步长。可以设置成负数来从右向左取样 2. 加…list dict str 这三种类型是python中最常用的几种数据类型。他们都是序列的一种 ■ 序列通用操作 1. 分片 s[a:b] 返回序列s中从s[a]到s[b-1]的片段。注意s[0:0]是空集而不是s[0] s[a:b:c] 加入第三个参数以设置取样步长。可以设置成负数来从右向左取样 2. 加减乘除 [None] * None,None * 注意这种列表直接乘以数字的做法是浅拷贝一个自身然后再extend进去。由于是浅拷贝所以存在着可变对象这样初始化可能会出现问题。比如 a [{}] * 3 这样初始化变量a后。表面上看a是一个由三个字典组成的列表但是实际上a[0][key] value之后a的值会变成[{key: value},{key: value},{key: value}]即三个字典实际上指向的是同一个对象导致变化始终同步。 3. 一些内建函数的操作 len(s),max(s),min(s)等 ■ list 对于list类型从数据结构层面上的分析记录在了“线性表的顺序表”中在这不做展开。这里主要说明一下常用的list方法 对于列表ls 赋值 只要不越界就可以进行分片的赋值 del del语句后面加的是list[index]不是值也不是索引 ls.append() 返回值是None ls.count(...) 计某一值出现的次数 ls.extend(another_ls) 将两个列表合并 ls.index(value) 获取某个值的索引 ls.insert(index,value) 在某个地方插入值 ls.pop() 不加参数默认pop掉最后一个元素并且返回其值 ls.remove(..) 去除从左到右第一个匹配到的值如果没找到报错 ls.reverse() 返回None对ls本身反序 ls.sort() 返回None对ls本身排序 //以上两个和sorted(ls),reversed(ls)区别这两个是以ls为素材返回一个排序或者反序的迭代器。 //顺便sorted和sort可以再传一个key作为参数key是一个函数对象意思是在进行排序时依据不是默认的东西而是把各个遍历的项对字典来说就是键作为参数传给key函数后经过处理后的返回值。比如想让一个字典的列表按照每个字典中的某个键dict_key的值大小来排序就可以sorted(dict,keylambda x:x.get(dict_key)) ■ dict dict类型保存键值对其键只能是str,tuple等不可变类型或者自定义的类型。假如是tuple之类组合对象的话tuple中的每一个元素都还必须是不可变类型。字典类型可以容纳任意多的键值对并且支持高效检索从字典中存取数据所花平均时间是O(1)的但最坏情况下有可能达到O(n)。 对于字典d有以下方法 d.clear() 清空字典 d.copy() 深复制 d.get(...) d.has_key(...) 判断字典是否含有某个键 d.items() 字典列表化每个元素是个元组tuple[0]是key,tuple[1]是value d.keys() d.update(e) 用e更新d对于d中没有的key则新建item对于有的覆盖老的value d.values() ■ str 对于字符串s s.find(...) 返回子串的位置 mark.join(list) 将mark作为分隔符把一个list给合并成一个字符串 s.lower() 全部小写化 s.upper() 全部大写 s.title() 单词词首全部大写 s.capitalize() 字串串首大写 s.isupper() 判断是否是全部字符都是大写 s.islower() s.istitle() //以上这六七个对字符串的文字性的处理都是返回值不改变字符串本身的 s.replace(a,b) s.split() s.strip() s.format(a,b) 这是个比较重要且有用的方法。用ab等给出的素材串替换s中的带大括号的部分相当于%s % (...)的作用。s中可以写{},{}这样format函数的参数会依次填补这些大括号如果想要手动指定顺序也可以{1},{0}。如果s中写的不是{0},{1}这种的话可以写{some_text}然后在format的参数里就要写some_text...来指定替换的变量的名称有点模板语言的意思.相比于%的格式化字符串的替换这个可以不用写完全一对一的个数。format的变量写法的话所有同样的变量都只要写一次就好了。*今天用这个format遇到一个坑当你要替换的字符串里有正则指定模式重复多少遍的表达式比如{12}这样的话format会报错因为它把正则的{12}当成它要解析的第十二个变量了。解决方法是写两遍大括号来转义即原文中的{12}如果要进行format就要写成{{12}}。 在要经过format处理的字符串中还可以有更加灵活的写法。上面说到底是用format参数指定的值来替换一些字符串中的变量但实际上format的参数甚至可以是一个对象然后在格式化字符串里面写上同名变量进行逻辑运算后再替换比如可以通过下标或者访问属性的方法来取值 #可以直接传一个列表对象
{li[0]} and {li[1]} are two items.format(li[1,2])#在类中可以有类似以下的书写方法相当于传一个自定义对象来取值格式化
my name is {self.name} and my age is {self.age}.format(selfself) 关于格式化输出这方面用%号格式化输出的规则和C语言类似但是用format方法的话不太一样其表现形式是在大括号中加上冒号以及各种不同的符号来表达格式化。比如,^,分别表示左对齐居中和右对齐前面加上一个字符以表示填充符后面加上一个数字表示宽度。{var:08}.format(var123) 得到00000123。{:.2f}则表示输出的数字要是float类型且保留两位小数除了f表示float之外还可以有{:b}表示二进制,{:x}表示十六进制等它们会自动对你传递进去的数字做进制转换再转化成字符串输出。类型提示必须放在位置提示后面比如{var:0^20.2f}这样。另外冒号后面加上一个逗号可以让输出有千位分隔。比如{:,}.format(123456789)得到123,456,789 另外使用format的时候应该注意调用它的对象和方法中的参数应尽量做到类型一直比如.format()或者u.format(u)。如果出现str.format(unicode)时python默认操作是用系统的默认编码格式sys.getdefaultcoding那个对unicode进行encode然后将其整合到相应str中去。类似的如果是unicode.format(str)的话那么就是拿系统默认编码对str进行decode之后再整合进unicode。 ■ string模块 其实str类本身的一些方法还不够强大所以有了专门的String模块来处理一些事情 string模块的成员变量们 string.lowercase 指代所有小写字母相当于abcd....xyz string.uppercase string.letters 所有字母先大写再小写相当于abcd...xyzABC..XYZ string.whitespace 所有空白字符 string.punctuation 一些标点符号 string模块的方法: capitlize(s) 返回S的首字母大写的串 capwords(s,sep) 用sep来split掉s然后把split出来的每部分的首字母大写再用sep把这些部分连接起来sep默认为空格 center(s,width[,fllchar]) 把s放在width(一个int数)长的字符串郑重两边用fillchar填充。可以用于生成文本文件中的分隔符之类的 count(s,sub[,start[,end]]) 返回在s[start:end]片段中sub子串出现的次数 swapcase(s) 切换大小写字母 zfill(s,width) 在s左侧添加0知道宽度达到width 上面曾经提到过s.format类似模板语言比如velocitypython的jinja2模块等的功能其实这是基于string中的一些类。string中有个Template类可以让用户手动地构造简单的模板 from string import Templates Template(Hello, ${name}) #变量用${...}的形式
s.substitute(nameFrank) #返回Hello, Frank
s.safe_substitute(namaeFrank) #save_substitute()对找不到的变量不报错