笔记的方法-读书简记 刷新:重新发现商业与未来-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 我的阅读书单 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记
笔记的方法-读书简记 刷新:重新发现商业与未来-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记

Python序列相关知识总结

2015年12月21日

写在前面


Python核心编程来来回回读过两三遍,很棒的书,尤其作为速查手册使用时。最近计划对其每一部分进行整理,一方面加深对Python的理解,另一方面方便以后在手头没有核心编程时能进行快速查询。本篇主要整理关于Python序列(字符串、列表、元祖)的部分,第一部分是对序列的整理,后面部分分别对字符串,列表,元祖进行展开。

序列


下面分别介绍适用于所有序列类型的标准操作符,序列类型操作符及内建函数。

标准类型操作符

标准类型操作符一般都能适用于所有的序列类型(除作复合类型对象的比较外)。下面是标准类型操作符一览表:

序列类型操作符

一、速查手册

二、对速查手册的一些补充说明

切片操作符的一些说明:

>>> s='abcdefgh'
>>> s[0:3] #[1,3)不包括3
'abc'
>>> s[::2] #用步长索引进行扩展的切片操作
'aceg'
>>> s='abcde'
>>> for i in [None]+range(-1,-len(s),-1): #使用None作为索引值来实现s[:-1]打印出abcde
...     print s[:i]
... 
abcde
abcd
abc
ab
a

内建函数(BIF)

一、序列类型转换工厂函数

二、序列类型可用的内建函数

字符串


字符串是Python里最常见的类型,可以简单的通过引号包含或者str()创建通常的字符串,或是unicode()、u+引号包含创建Unicode字符串,他们都是抽象类basestring的子类。

一、字符串特有的操作符

字符串除了可以使用上述序列操作符外,还有一些其特有的操作符

1 编译时字符串连接。

>>> foo="Hello" "World"
>>> foo
'HelloWorld'

通过这种方法可以把字符串分几部分来写,而不用加反斜杠,这样的好处是你可以把注释加进来,如:

>>> f=urllib.urlopen('http://'   #protocol
... 'localhost'                  #hostname  
... ':8000')                     #port

2 普通字符转换为Unicode字符串

如果把一个普通字符串和一个Unicode字符串做连接处理,Python会自动将普通字符串转换为Unicode字符串。

>>> 'Hello'+u' '+'World'
u'Hello World'

3 原始字符串操作符(r/R)

>>> path=r'C:\windows\temp'
>>> path
'C:\\windows\\temp'

4 三引号

三引号可以保持其包含的字符的格式,让程序员从引号和特殊符号的泥潭里解脱出来。

二、格式化操作符

字符串格式化符号一览表:

格式化操作符辅助指令一览表:

一些例子:

>>> 'Host: %s\tPort: %d %0.2f %#x' % ('mars',80,1234.56,108)
'Host: mars\tPort: 80 1234.56 0x6c'

三、字符串模板

字符串格式化操作符很酷易用上手快,但它的一个缺点是不是那么直观。字符串模板则克服了这个缺点,类似于shell风格的$。

>>> from string import Template
>>> s=Template('There are ${howmany} ${lang} Quotation Symbols')
>>> 
>>> print s.substitute(lang='Python', howmany=3)
There are 3 Python Quotation Symbols

四、字符串内建函数

字符串内建方法一览表:

五、Unicode

字符编码是让程序员很头疼的一件事情,不留神就会碰到编解码错误。搞清Unicode,ASCII,GBK,GBK2312,UTF-8,UTF-16,UTF-32等等之间的关系很有必要。

首先Unicode,ASCII,GBK,GBK2312属于编码字符集,即每个字符都有唯一的整数编号,每个字符都有自己特有的编号,同一个字符在不同编码字符集中编号也会不同,很多编码字符集都是ASCII的超集,比如英文字母“A”,在ASCII及Unicode及GB2312中,均是第0x41个字符。

UTF-8,UTF-16,UTF-32是对Unicode编码字符集的不同编码方式。但你可能就问了,常常听人说使用ASCII,GBK2312为什么经常和UTF-8这些并列,他们前者不是编码字符集,后者是编码方式吗?前者是编码字符集没有错,但是对于ASCII或者GB2312都只有唯一一种编码,那么我称呼它们为ASCII编码或者GB2312编码也没有问题。

那为什么不像ASCII一样直接用Unicode编码方式,还要有UTF-8等编码?因为Unicode字符集太大,都用很多字节表示的话会占很多空间,使用UTF-8等编码方案会节约存储空间。比如对于UTF-8编码方案,255以下的Unicode字符编号不做变换,以后的做编码,所以对于UTF-8,字符数字占一个字节,汉子占三个字节,不用都分配好几个字节了。感兴趣的可以通过参考[3]进行深入研究。

弄清这些概念后下面列举一些Python下Unicode的使用及注意事项,可以避免90%由Unocode字符串引起的bug。

1 不要使用str()函数,用unicode()代替。unicode(),unichar()可以看成Unicode版本的str(),char(),后者默认只能处理常规的ASCII编码。

2 程序中出现字符串,一定要加个前缀u。

3 不要使用过时的string模块。

4 不到必须时不要在程序里编解码Unicode字符。只在你要写入文件或数据库或者网络时才调用encode()函数;相应的只在你需要把数据读回来的时候才调用decode()函数。

5 Python标准库绝大部分模块都是兼容Unicode的,除了pickle模块,使用此模块时一定要先转换为ASCII字符串。

列表


列表类型的内建函数一览表:

元组


元祖的一些特有特性:

1 不可改变,但不是完全不可改变,当元祖里有可变类型的内容时(如列表),则可变类型可变(列表可以改变)。

2 单元素元祖,用逗号(,)来实现

>>> ('xyz')  #这样创建的是字符串而不是元组
'xyz'
>>> ('xyz',) #正确创建单元素元祖的方法
('xyz',)

一些其他


一、与序列类型相关的模块

与序列类型相关的模块一览表:

二、拷贝相关

序列类型对象的默认类型拷贝是浅拷贝,一般是以以下几种方式实施(1)完全切片操作[:];(2)利用工厂函数,比如list(),dict()等;(3)使用copy模块的copy函数。

如果想实现深拷贝,需要copy.deepcopy()函数。

小结


上述部分是对《Python核心编程》一书中序列:字符串、列表和元组一章的读书简记,供快速参考查询。

参考文献


[1] Python核心编程 第二版. Wesley J.Chun。

[2] 你不知道的字符集和编码

[3] Unicode 字符集与它的编码方式


版权声明:本文为博主原创文章,转载请注明出处 本文总阅读量    次