注:本文档主要是学习《Python核心编程(第二版)》时做的资料整理。

1.序列

序列的成员是有序排列的,并且可以通过下标偏移量访问到它的一个或者几个成员,包括字符串(普通字符串和Unicode字符串)、列表和元组类型。下标偏移量从0开始到总元素-1结束。

1.1操作符

1.1.1成员关系操作符

成员关系操作符:用来判断一个元素是否属于一个序列。in/not in操作符返回值一般就是True/False,语法为: 对象 [not] in 序列

>>> list = [1, 2, 3]

>>> 1 in list

True

>>> 4 in list

False

1.1.2连接操作符

允许把一个序列和另一个相同类型的序列做连接sequence1 + sequence2,这种方法不是最高效的;

>>> str1 = 'hello'

>>> str2 = 'world'

>>> str1 + str2

'helloworld'

对于字符串,可将所有的子字符串放在一个列表或可迭代对象中,然后调用join方法来把所有的内容连接在一起以节约内存;对列表来说,可用列表的extend()方法来把两个或者多个列表对象合并。

>>> str3 = ''

>>> str3.join([str1, str2])

'helloworld'

1.1.3重读操作符(*)

sequence * copies_int,copies_int必须是一个整型,不能是长整型。该操作符返回一个新的包含多份原对象拷贝的对象。

>>> s1 = 'ha'

>>> s1*3

'hahaha'

1.14切片操作符([], [:], [::])

访问某一个数据元素的语法:sequence[index]。范围从0到偏移值最大值(比序列长度少一),用len()函数可以得到序列长度,实际的范围是0<= index <= len(sequence)-1。使用负数索引,范围是-1到序列的负长度-len(sequence),-len(sequence) <= index <= -1

>>> print ('Faye', 'Leanna', 'Daylen')[1]

Leanna

访问多个元素:sequence[starting_index: ending_index],可得到从起始索引到结束索引之间的一个"片"元素。

1.15用步长索引来进行扩展的切片操作

sequence[starting_index: ending_index, step]

>>> s = 'abcdefghijk'

>>> s[::-1]

'kjihgfedcba'

>>> s[::2]

'acegik'

>>>

>>> a = 'abcde'

>>> for i in [None] + range(-1, -len(a), -1):

... print a[:i]

...

abcde

abcd

abc

ab

a

序列操作符

作用

seq[ind]

获取下标为ind的元素

seq[ind1:ind2]

获取下标从ind1到ind2间的元素集合

seq*expr

序列重复expr次

seq1 + seq2

连接序列seq1和seq2

obj in seq

判断obj元素是否包含在seq中

obj not in seq

判断obj元素是否不包含在seq中

1.2序列内建函数

1.2.1类型转换函数

内建函数list()、str()和tuple()被用作在各种类型之间转换,这些函数都是工厂函数,将对象作为参数,并将其内容(浅拷贝)到生成的对象中。

一旦一个对象被建立,就不能改变其身份或类型,把一个列表对象传给list()函数,会创建一个这个对象的浅拷贝,然后将其插入新的列表中。所谓浅拷贝就是只拷贝这个对象的索引,而不是创建了一个对象。

函数

含义

list(iter)

把可迭代对象转换为列表

str(obj)

把obj对象转换为字符串(对象的字符串表示法)

unicode(obj)

把对象转换为Unicode字符串(使用默认编码)

basestring()

抽象工厂函数,其作用仅仅是为str和Unicode函数提供父类,所以不能被实例化,也不能被调用

tuple(item)

把一个可迭代对象转换为一个元组对象

>>> obj = list(x for x in range(10))

>>> obj

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> str(obj)

'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'

>>> tuple(obj)

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

>>> unicode(obj)

u'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'

1.2.2可操作函数

序列类型可用的内建函数如下:

函数名

功能

enumerate(iter)

接受一个可迭代对象作为参数,返回一个enumerate对象(同时也是一个迭代器),该对象生成由iter每个元素的index值和item值组成的数组

len(seq)

返回seq的长度

max(iter, key=None) or max(arg0, arg1,…, key=None)

返回iter或(arg0, arg1,…)中的最大值,如果指定了key,这个key必须是一个可以传给sort()方法的,用于比较的回调函数

min(iter, key=None) or min(arg0, arg1,…, key=None)

返回iter或(arg0, arg1,…)中的最小值,如果指定了key,这个key必须是一个可以传给sort()方法的,用于比较的回调函数

sorted(iter, func=None, key=None, reverse=False)

接受一个可迭代对象,返回一个有序的列表,可选参数func、key和reverse的含义跟list.sort()内建函数的参数含义一样

sum(seq, init=0)

返回seq和可选参数init的总和,其效果等同于reduce(operator,add,seq,init)

zip(it0, it1, … , itN)

返回一个列表,其第一个元素是it0、it1…这些元素的第一个元素组成的一个元组,第二个。。。依此类推

后面详细介绍字符串、列表和元组时再详细介绍这些函数。

最新文章

  1. Objective-C 中self.与_访问方式的区别
  2. Android优秀学习资料(高手博客
  3. DataTable 转成字符串数组
  4. ios - cordova 简介
  5. 计算内存容量(measure)
  6. Linux如何查找文件安装路径?
  7. javascript闭包学习
  8. windows上下载redis扩展
  9. selenium设置chrome和phantomjs的请求头信息
  10. Java运行环境(win10)
  11. 【值得收藏】一份非常完整的Mysql规范
  12. http协议基础(十一)http与https
  13. 关于Dos命令中存在中文的解决方法
  14. LA 4670 Dominating Patterns (AC自动机)
  15. python时间模块详解(time模块)
  16. pyqtree
  17. Ubuntu14.04 panic --not syncing: Attempt to kill init 解决方法
  18. Spring Data 关于Repository的介绍(四)
  19. Xcode 6.0中彻底关闭ARC
  20. 【Foreign】红与蓝 [暴力]

热门文章

  1. 洛谷4139 bzoj 3884 上帝与集合的正确用法
  2. cmd 如何跨驱动器移动文件夹
  3. C语言 屏幕截图 (GDI)
  4. 【20.51%】【codeforces 610D】Vika and Segments
  5. TextInputLayout低版本bug :“android.view.InflateException: Binary XML file line #6 : Error inflating class Textview”
  6. vagrant在windows下的安装和配置(二)
  7. Perl 的继承
  8. ArrayList、LinkedList、Vector、CopyOnWriteArrayList的区别和源码分析
  9. 记一次线上 OOM 和性能优化
  10. $hncpc2019E\ Numbers$ 搜索