序列
序列包含:字符串,列表和元组
序列基本操作符
索引:seq[ind] 获得下标为ind 的元素
分片( [], [:], [::] ):seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合
重复操作符( * ):seq * expr 序列重复expr 次
连接操作符( + ):sequence1 + sequence2,该表达式的结果是一个包含sequence1 和sequence2 的内容的新序列
判断成员资格:obj in/not in seq 判断obj 元素是否包含在seq 中,返回True或False
求长度:len()
最大值最小值:max() min()
关于索引:
sequence[index]
sequence 是序列的名字,index 是想要访问的元素对应的偏移量.偏移量可以是正值,范围从0 到偏移最大值(比序列长度少一),用len()函数(下一节会讲),可以得到序列长度,实际的范围是 0 <= inde <= len(sequece)-1 .另外,也可以使用负索引,范围是 -1 到序列的负长度,-len(sequence), -len(sequence) <= index <= -1.正负索引的区别在于正索引以序列的开始为起点,负索引以序列的结束为起点.
关于切片:
sequence[starting_index:ending_index]
通过这种方式我们可以得到从起始索引到结束索引(不包括结束索引对应的元素)之间的一"片"元素.起始索引和结束索引都是可选的,如果没有提供或者用None 作为索引值,切片操作会从序列的最开始处开始,或者直到序列的最末尾结束.用步长索引来进行扩展的切片操作序列的最后一个切片操作是扩展切片操作,它多出来的第三个索引值被用做步长参数。s[::-1] # 可以视作"翻转"操作
序列类型转换工厂函数
list(iter):把可迭代对象转换为列表
str(obj): 把obj 对象转换成字符串(对象的字符串表示法)
unicode(obj): 把对象转换成Unicode 字符串(使用默认编码)
basestring(): 抽象工厂函数,其作用仅仅是为str 和unicode 函数提供父类,所以不能被实例化,也不能被调用tuple(iter): 把一个可迭代对象转换成一个元组对象
字符串
特性:通过加引号(单引号,双引号,三引号)创建,不可变类型
格式 |
描述 |
%% |
输出百分号标记 |
%c |
字符及其ASCII码 |
%r |
优先用repr()函数进行字符串转换 |
%s |
优先用str()函数进行字符串转换 |
%d |
有符号整数(十进制) |
%u |
无符号整数(十进制) |
%o |
无符号整数(八进制) |
%x |
无符号整数(十六进制) |
%X |
无符号整数(十六进制大写字符) |
%e |
浮点数字(科学计数法) |
%E |
浮点数字(科学计数法,用E代替e) |
%f |
浮点数字(用小数点符号) |
%g |
浮点数字(根据值的大小采用%e或%f) |
%G |
浮点数字(类似于%g) |
%p |
指针(用十六进制打印值的内存地址) |
%n |
存储输出字符的数量放进参数列表的下一个变量中 |
辅助符号 |
说明 |
* |
定义宽度或者小数点精度 |
- |
用做左对齐 |
+ |
在正数前面显示加号(+) |
<sp> |
在正数前面显示空格 |
# |
在八进制数前面显示零(0),在十六进制前面显示“0x”或者“0X”(取决于用的是“x”还是“X”) |
0 |
显示的数字前面填充“0”而不是默认的空格 |
m.n |
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
注意:辅助符号要在百分号(%)和格式化符号之间。
辅助符号举例:
Num1 = 108 print("%#X" % Num1) Num2 = 234.567890 print("%.2f" % Num2) 输出: 0X6C 234.57
原始字符串操作符( r/R )
Python中的原始字符串以r开头,使用原始字符串可以避免字符串中转义字符带来的问题。
例如写路径时 path = ‘c:\noway‘,此时用 print path,其结果为: c: oway 如果用原始字符串 path = r‘c:\noway‘,则 print path,其结果为: c:\noway
列表
l 列表是序列对象,可包含任意的Python数据信息,如字符串、数字、列表、元组等
l 列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加、修改、删除等操作
l 可以通过list(seq)函数把一个序列类型转换成一个列表
列表是由方括号[ ]来定义的,当然,你也可以用工厂方法list()来创建。
>>> aList = [123, ‘abc‘, 4.56, [‘inner‘, ‘list‘], 7-9j] >>> list(‘foo‘) [‘f‘, ‘o‘, ‘o‘]
列表方法:
1.list.append(x),在list列表尾部追加单个对象x,使用多个参数会引起异常
2. list.count(x),返回对象x在list列表中出现的次数
3. list.extend(L),将L列表中的内容添加到list列表中,返回None
4. list.index(obj,i=0,j=len(list)):返回list[k]==obj的k值,并且k的范围在 i<=k<j,否则引发ValueError异常
5. list.insert(i,x),在索引为i的元素前插入对象x,如list.insert(0,x)在第一项前插入对象,返回None
6. list.pop(x),删除列表中索引为x的表项,并返回该表项的值,若未指定索引,pop返回列表最后一项
7. list.remove(x),删除列表中匹配对象x的第一个元素,匹配元素时产生异常,返回None
8. list.reverse(),颠倒列表元素的顺序
9. list. sort([cmp[, key[, reverse]]]),对列表排序,返回none,bisect模块可用于排序列表项的添加和删除
序列类型函数
Len():对字符串来说len()返回字符串的长度,就是字符串包含的字符个数.对列表或者元组来说,它会像你想像的那样返回列表或者元组的元素个数,容器里面的每个对象被作为一个项来处理.
Max()and min()
Sorted() and reversed():排序
Enumerate() and zip():
Sum():求和
List() and tuple():list()函数和tuple()函数接受可迭代对象(比如另一个序列)作为参数,并通过浅拷贝数据来创建一个新的列表或者元组它们用于在两种类型之间进行转换,比如你需要把一个已有的元组转成列表类型的(然后你就可以修改它的元素了),或者相反.
元组
1、相当于不可变的列表,不能进行更新内容和顺序
2、当处理一组对象时,这个组默认是元组类型
3、所有的多对象,逗号分隔的,没有明确用符号定义的这些都默认为元组类型
创建元组:
>>>atuple = (‘1’,’b’,’a’) >>> tuple(‘bar‘) (‘b‘, ‘a‘, ‘r‘) >>>atuple = (‘1’,) #创建单个元素的元组,要加个“,”号
关于元组操作:
1. 无法向元组添加元素。元组没有 append() 或 extend() 方法。
2. 不能从元组中删除元素。元组没有 remove() 或 pop() 方法。
3. 可以 在元组中查找元素,由于该操作不改变元组。
4. 还可以使用 in 运算符检查某元素是否存在于元组中。
更新元组
跟数字和字符串一样,元组也是不可变类型,就是说你不能更新或者改变元组的元素,前面,我们是通过现有字符串的片段再构造一个新字符串的方式解决的,对元组同样需要这样。
aTuple = (123, ‘abc‘, 4.56, [‘inner‘, ‘tuple‘], 7-9j) aTuple = aTuple[0], aTuple[1], aTuple[-1] print(aTuple) 输出: (123, ‘abc‘, (7-9j)) tup1 = (12, 34.56) tup2 = (‘abc‘, ‘xyz‘) tup3 = tup1 + tup2 print(tup3) 输出: (12, 34.56, ‘abc‘, ‘xyz‘)
那么元组有什么好处呢?
• 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表。
• 对不需要改变的数据进行“ 写保护” 将使得代码更加安全。使用元组替代列表就像是有一条隐含的 assert 语句显示该数据是常量,特别的想法(及特别的功能)必须重写。(??)
• 一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。
• 元组作为很多内建函数和方法的返回值存在。
参考:http://hi.baidu.com/wuxinzy/item/c2c3cd428c99aa01896d10a7
关于列表和列表,元组和元组之间的比较:
1. 对两个列表的元素进行比较.
2. 如果比较的元素是同类型的,则比较其值,返回结果.
3. 如果两个元素不是同一种类型,则检查它们是否是数字.
a. 如果是数字,执行必要的数字强制类型转换,然后比较.
b. 如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")
c. 否则,通过类型名字的字母顺序进行比较.
4. 如果有一个列表首先到达末尾,则另一个长一点的列表"大".
5. 如果我们用尽了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,就是说返回一个0.