1.
有多少可以保存并被访问的序列元素
序列
1.1成员关系操作符(in,not in)
1.2连接操作符(+)
1.3重复操作符(*)
1.4切片操作符([],[:],[::])
访问某个数据元素的语法如下:
sequence[index]
sequence是序列的名字,index是访问元素的便宜了。
正序为0<=index<=len(sequence)-1
负索引为
-len(sequence)<=index<=-1
试图访问一个越界的索引会引发异常tuple index out of rang
例子:
>>> name=('a','b','c') >>> print name[4] Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> print name[4] IndexError: tuple index out of range
因为python是面向对象的,所以直接直接访问一个序列的元素
例子:>>> print ('a','b','c')[1]
b
以下我们来看序列的切片入门,举以下几个例子:
整个序列:
>>> name ('a', 'b', 'c') >>> name[:] ('a', 'b', 'c')
序列切片操作:
>>> name[0:1] ('a',) >>> name[:1] ('a',) >>> name[1:2] ('b',) >>> name[1:3] ('b', 'c') >>> name[:3] ('a', 'b', 'c')
1.5用步长索引来进行扩展的切片操作
>>> name[::-1] ('c', 'b', 'a') #可以视作"翻转"操作 >>> name[::2] ('a', 'c') #隔一个取一个的操作
1.6切片索引的更多内容
注意点:切片索引的语法比简单的单一索引灵活得多。开始和结束索引值可以超过字符串的长度。
>>> ('a','b','c')[-100:100] ('a', 'b', 'c')
2.内建函数(BIF)
2.1类型转换
内建函数list(),str(),tuple()可以用作各种序列之间的转换
转换?为什么用“转换”二字,一旦python的对象被建立,我们就不能更改其身份或类型了。
例子:把一个列表对象传给list()函数,便会创建对象的浅拷贝,然后将其插入新的列表中。浅拷贝是只拷贝对象的索引,而不是建立一个对象。
2.2可操作内建函数
3.字符串
python里单引号和双引号的作用是相同的。
python实际上有三种字符串。
通常意义的字符串(str)和Unicode(unicode)实际上都是抽象类basestring的子类。
basestring是不能实例化的
>>> basestring('a') Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> basestring('a') TypeError: The basestring type cannot be instantiated
3.1字符串创建和赋值
>>> a='1' >>> b="2" >>> print a 1 >>> b '2'
3.2如何访问字符串的值(字符和子串)
>>> a='abcde' >>> a[0] 'a' >>> a[1:4] 'bcd'
3.3改变字符串
字符串类型补课不,所以要改变一个字符串创建一个新串来实现。
3.4如何删除字符和字符串
>>> del a >>> a Traceback (most recent call last): File "<pyshell#30>", line 1, in <module> a NameError: name 'a' is not defined
4字符串和操作符
4.1标准类型操作符
=,<,>做比较操作时,按ASCII值大小做比较
4.2序列操作符切片
正向索引,反向索引,默认索引
若开始索引或结束索引没指定,则分别以字符串的第一个和最后一个索引值为默认值。
4.3成员操作符(in,not in)
>>> 'bc' in 'abcd' True >>> 'n' in'ab' False
字符串大写,小写之类的转化
>>> import string >>> string.uppercase 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> string.lowercase 'abcdefghijklmnopqrstuvwxyz' >>> string.letters 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' >>> string.digits '0123456789'
4.4.连接符
>>> 'a'+'b' 'ab' >>> 'a'+''+'b' 'ab' >>> s='a'+''+'b'+''+'c' >>> s 'abc' >>> import string >>> string.upper(s[:1]+s[0]) 'AA'
不推荐用string模块来处理字符串常量。原因是python必须为每个参加连接操作的字符串分配新的内存,包括新的字符串。
推荐使用字符串格式化操作符%,或把字符串放到一个列表,一个join()来连接。
4.5.编译时字符串连接
python允许源码中把几个字符串连在一起来构建新的
>>> a="b""c" >>> a 'bc'
4.6.普通字符串转化为unicode字符串
>>> 'hello'+u''+'world'+u'!' u'helloworld!'
5.只适用于字符串的操作符
下面是一些使用格式字符串的例子
5.1十六进制输出
>>> "%x" %108 '6c'
5.2浮点型和科学计数法形式输出
>>> "%f" %123.456 '123.456000'
5.3整形和字符串输出
>>> "%d"%4 '4'
5.4调试
5.5unicode字符串操作符(u/U)
>>> u'abc' u'abc' >>> ur'hello' u'hello'
6内建函数 定义若干个字符串,然后进行操作
6.1标准类型函数
cmp()
6.2序列类型函数
len()
max()和min()
enumerate()
zip()
6.3字符串类型函数
raw_input()
内建的该函数使用给定字符串提示用户输入并返回该输入。
>>> user_input=raw_input("Enter your name:") Enter your name:a >>> user_input 'a'
str()和unicode(),工厂函数,产生对应的类型的对象。接受一个任意类型的对象。
chr(),unichr(),ord()
chr()函数:返回一个range(256)的整数
unichr()函数:返回的range(256)的unicode字符
ord():是前两者的配对函数
>>> chr(65) 'A' >>> unichr(12345) u'\u3039' >>> ord('a') 97 >>> chr(12345) Traceback (most recent call last): File "<pyshell#58>", line 1, in <module> chr(12345) ValueError: chr() arg not in range(256) >>> ord(u'\uffff') 65535 >>> ord(u'\ufffffff') Traceback (most recent call last): File "<pyshell#60>", line 1, in <module> ord(u'\ufffffff') TypeError: ord() expected a character, but string of length 4 found