自学python系列4:序列,字符串,列表,元组
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
>>> 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')
('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')
('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') #隔一个取一个的操作
('c', 'b', 'a') #可以视作"翻转"操作
>>> name[::2]
('a', 'c') #隔一个取一个的操作
1.6切片索引的更多内容
注意点:切片索引的语法比简单的单一索引灵活得多。开始和结束索引值可以超过字符串的长度。
>>> ('a','b','c')[-100:100]
('a', 'b', 'c')
('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
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'
>>> b="2"
>>> print a
1
>>> b
'2'
3.2如何访问字符串的值(字符和子串)
>>> a='abcde'
>>> a[0]
'a'
>>> a[1:4]
'bcd'
>>> 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
>>> 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
True
>>> 'n' in'ab'
False
字符串大写,小写之类的转化
>>> import string
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> string.digits
'0123456789'
>>> 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'
'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'
>>> a
'bc'
4.6.普通字符串转化为unicode字符串
>>> 'hello'+u''+'world'+u'!'
u'helloworld!'
u'helloworld!'
5.只适用于字符串的操作符
下面是一些使用格式字符串的例子
5.1十六进制输出
>>> "%x" %108
'6c'
'6c'
5.2浮点型和科学计数法形式输出
>>> "%f" %123.456
'123.456000'
'123.456000'
5.3整形和字符串输出
>>> "%d"%4
'4'
'4'
5.4调试
5.5unicode字符串操作符(u/U)
>>> u'abc'
u'abc'
>>> ur'hello'
u'hello'
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'
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
'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