字符

Python连接多个字符串可用“+”号,但这个操作不如把所有子字符串放到一个列表或可迭代对象中,然后调用一个join方法来把所有内容连接在一起节约内存。


原始字符串操作符(R/r):相当于取消“\”转义,在使用正则表达式时,需注意正则表达式的“\”也需要转义,因此用原始字符串操作符比较好。一个原始字符串不能以单个反斜杠结尾,因为反斜杠会转义后面的引号。


字符串内建函数(详见《Python核心编程》P122-123):string.decode(encode="..."),以encode指定编码格式编码;string.decode(encode='...'):以decode指定编码格式解码;string.endswith(obj):检查是否以obj结尾;string.startswith(obj):检查是否以obj开头。string.find(str):检查str是否包含在string中,不在返回-1;string.index(str):同上,不过不在的话返回异常;string.join(seq):以string为分隔符连接序列中元素;string.split(str=""):以str分割字符串


python的字符串不是以NULL(\0)作为结束符的,字符串中可以出现NULL字符。


字符串格式化表达式操作符及其辅助指令:《Python核心编程》P114-115。还有基于字典的字符串格式化。


字符串格式化调用方法:"....".format(...)。相对于格式化表达式是一种显式值引用,有一定额外功能,支持直接的键和属性引用。


string模块:string.uppercase:26个大写英文字母。string.lowercase:26个小写英文字母。string.letters:大写加小写。string.digits:10个数字字符。






列表

列表比较:

1、对两个列表进行比较。

2、如果比较的元素是同类型的,则比较其值,返回结果

3、如果两个元素不是同一类型,则检查他们是否是数字。如果是数字,执行必要的数字强制类型转换,然后比较。如果一方是数字,则另一方的元素大(数字是最小的),否则通过类型名字的字母顺序比较

4、如果有一个列表受限到达末尾,则另一个长一点的列表大

5、如果用尽了两个列表的元素而且所有元素都相等,则相等


使用可变对象的方法入sort(),extend(),reverse()时需注意,这些操作在原地执行,列表内容会改变,但无返回值,而reversed(),sorted()等函数返回一个对象,原来的列表不变,返回一个新的对象。


列表分片赋值:L[0:2]=[3,4,5]。分成两步理解:先删除左边的分片,再将右边的片段插入到原来被删除的位置,因此插入的元素不需要与删除的数目相等。eg:L[1:2]=[]删除指定片段。




元组

创建只有一个元素的元组需要在元组分隔符里面加以个逗号。




杂项


对象赋值实际上是简单的对象引用,当创建了一个对象并把它赋给另一个变量时,Python并没有拷贝这个对象,而是拷贝了这个对象的引用,就相当于指向了同一个对象。


完全切片操作[:],工厂函数,copy模块中的copy函数都是产生的浅拷贝,浅拷贝其实是新创建了一个类型跟原对象一样,其内容是原来对象的引用。也可以这么说,浅拷贝只是做顶层复制,不能够复制嵌套的数据结构。而copy.deepcopy(深拷贝)可对任意嵌套对象做完整的复制。


None对象可以起到一个空占位作用。例如要预先分配一个100项的列表:L[None]*100


Python中任何东西都是对象类型。


如果遇到一个复合对象包含指向自身的引用,就称之为循环对象,无论何时Python在对象中检测到循环,都会打印成[...],而不会陷入无限循环。