>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>>
>>>
>>> a*3
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]
>>> b=[2,3,4]
>>> a+b
[1, 2, 3, 4, 5, 2, 3, 4]
>>>
切片操作符:
sequence[index]:访问某一数据元素
sequence 是序列的名字,index 是想要访问的元素对应的偏移量.
偏移量可以是正值,范围从0 到偏移最大值(比序列长度少一),用len()函数,可以得到序列长度,实际的范围是 0 <= inde <= len(sequece)-1 .另外,也可以使用负索引,范围是 -1 到序列的负长度,-len(sequence), -len(sequence) <= index <= -1.正负索引的区别在于正索引以序列的开始为起点,负索引以序列的结束为起点
sequence[starting_index:ending_index]
有个需要注意的地方:从起始索引到结束索引(不包括结束索引对应的元素 )之间的一"片"元素.起始索引和结束索引都是可选的,如果没有提供或者用None 作为索引值,切片操作会从序列的最开始处开始,或者直到序列的最末尾结束
序列类型转换的工厂函数:
函数 含义
list(iter) 把可迭代对象转换为列表
str(obj) 把obj 对象转换成字符串(对象的字符串表示法)
unicode(obj) 把对象转换成Unicode 字符串(使用默认编码)
basestring() 抽象工厂函数,其作用仅仅是为str 和unicode 函数提供父类,所以不能被实例化,也不能被调用
tuple(iter) 把一个可迭代对象转换成一个元组对象
序列类型可用的内建函数
函数名 功能
enumerate(iter) 接受一个可迭代对象作为参数,返回一个enumerate 对象(同时也是一个迭代器),该对象生成由iter 每个元素的index 值和item 值组成的元组(PEP 279)
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,arg2,...)里面的最小值;如果指定了key,这个key 必须是一个可以传给sort()方法的,用于比较的回调函数.
reversed(seq) 接受一个序列作为参数,返回一个以逆序访问的迭代器(PEP 322)
sorted(iter,func=None, key=None, reverse=False)c 接受一个可迭代对象作为参数,返回一个有序的列表;可选参数func,key 和reverse 的含义跟list.sort()内建函数的参数含义一样.
sum(seq, init=0)a 返回seq 和可选参数init 的总和, 其效果等同于reduce(operator.add,seq,init)
zip([it0, it1,... itN])d 返回一个列表,其第一个元素是it0,it1,...这些元素的第一个元素组成的一个元组,第二个...,类推.
>>> s=str(range(4))
>>> s
'[0, 1, 2, 3]'#这里将列表当做一个字符串,其中,也是作为字符串中的一个元素的,和下面的列表a不同。s【2】取值为,而a【2】取值为3.
>>> s[1]
'0'
>>> s[2]
','
>>>
>>> a=[1,2,3,4]
>>> a[1]
2
>>> a[2]
3
字符串是不可改变的。
要改变一个字符串就必须通过创建一个新串的方式来实现。也就是说你不能只改变一个字符串的一个字符或者一个子串,然而,通过拼凑一个旧串的各个部分来得到一个新串是被允许的,
通过赋一个空字符串或者使用del 语句来清空或者删除一个字符串:
>>> a=""
>>> a
''
>>> del a
>>> a
Traceback (most recent call last):
File "
NameError: name 'a' is not defined
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常) 某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。字符串和浮点数,有着独特的解读方式。
>>> s='foolbar'
>>> for t in enumerate (s):
... print t
...
(0, 'f')
(1, 'o')
(2, 'o')
(3, 'l')
(4, 'b')
(5, 'a')
(6, 'r')
>>>
>>>
>>> for i,t in enumerate(s):
... print i,t
...
0 f
1 o
2 o
3 l
4 b
5 a
6 r
>>> s,t='dds','dsdfgf'
>>> s
'dds'
>>> t
'dsdfgf'
>>> zip (s,t)
[('d', 'd'), ('d', 's'), ('s', 'd')]
>>>
>>>
>>> zip(t,s)
[('d', 'd'), ('s', 'd'), ('d', 's')]
>>>
字符串的 内建函数:
string.capitalize() :把字符串的第一个字符大写
string.center(width) 返回一个原字符串居中,并使用空格填充至长度width 的新字符串
string.count(str, beg=0,end=len(string))
返回str 在string 里面出现的次数,如果beg 或者end 指定则返回指定范围内str 出现的次数
string.decode(encoding='UTF-8',errors='strict') :
以encoding 指定的编码格式解码string,如果出错默认报一个ValueError 的异常, 除非errors 指定的是'ignore' 或者'replace'
string.encode(encoding='UTF-8',errors='strict')
以encoding 指定的编码格式编码string,如果出错默认报一个ValueError 的异常,除非errors 指定的是'ignore'或者'replace'
string.endswith(obj, beg=0,end=len(string))
检查字符串是否以obj 结束,如果beg 或者end 指定则检查指定的范围内是否以obj 结束,如果是,返回True,否则返回False.
string.expandtabs(tabsize=8)把字符串string 中的tab 符号转为空格,默认的空格数tabsize 是8.
string.find(str, beg=0,end=len(string)) 检测str 是否包含在string 中,如果beg 和end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.index(str, beg=0,end=len(string)) 跟find()方法一样,只不过如果str 不在string 中会报一个异常.
string.isalnum():如果string 至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
string.isalpha():如果string 至少有一个字符并且所有字符都是字母则返回True,否则返回False
string.isdecimal():如果string 只包含十进制数字则返回True 否则返回False.
string.isdigit():如果string 只包含数字则返回True 否则返回False.
string.islower():如果string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False
string.isnumeric():如果string 中只包含数字字符,则返回True,否则返回False
string.isspace(): 如果string 中只包含空格,则返回True,否则返回False.
string.istitle():如果string 是标题化的(见title())则返回True,否则返回False
string.isupper(): 如果string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回False
string.join(seq) Merges (concatenates)以string 作为分隔符,将seq 中所有的元素(的字符串表示)合并为一个新的字符串
string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度width 的新字符串
string.lower() 转换string 中所有大写字符为小写.
string.lstrip() 截掉string 左边的空格
string.partition(str):
有点像find()和split()的结合体,从str 出现的第一个位置起,把字符串string 分成一个3 元素的元租(string_pre_str,str,string_post_str),如果string 中不包含str 则string_pre_str == string.
string.replace(str1, str2,num=string.count(str1))把string 中的str1 替换成str2,如果num 指定,则替换不超过num 次.
string.rfind(str, beg=0,end=len(string))类似于find()函数,不过是从右边开始查找.
string.rindex( str, beg=0,end=len(string)) 类似于index(),不过是从右边开始.
string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度width 的新字符串
string.rpartition(str)e 类似于partition()函数,不过是从右边开始查找.
string.rstrip() 删除string 字符串末尾的空格.
string.split(str="", num=string.count(str)) 以str 为分隔符切片string,如果num有指定值,则仅分隔num 个子字符串
string.splitlines(num=string.count('/n'))b, c 按照行分隔,返回一个包含各行作为元素的列表,如果num 指定则仅切片num 个
行.
string.startswith(obj, beg=0,end=len(string))b, e 检查字符串是否是以obj 开头,是则返回True,否则返回False。如果
beg 和end 指定值,则在指定范围内Edit By Vheavens检查.
string.strip([obj]) 在string 上执行lstrip()和rstrip()
string.swapcase() 翻转string 中的大小写
string.title()b, c 返回"标题化"的string,就是说所有单词都是以大写开始,其余字母均为小写(见istitle())
string.translate(str, del="") 根据str 给出的表(包含256 个字符)转换string 的字符,要过滤掉的字符放到del 参数中
string.upper() 转换string 中的小写字母为大写
string.zfill(width) 返回长度为width 的字符串,原字符串string 右对齐,前面填充0
与字符串类型有关的模块
string 字符串操作相关函数和工具,比如Template 类.
re 正则表达式:强大的字符串模式匹配模块
struct 字符串和二进制之间的转换
c/StringIO 字符串缓冲对象,操作方法类似于file 对象.
base64 Base 16,32,64 数据编解码
codecs 解码器注册和基类
crypt 进行单方面加密
diffliba 找出序列间的不同
hashlibb 多种不同安全哈希算法和信息摘要算法的API
hmac HMAC 信息鉴权算法的Python 实现
md5d RSA 的MD5 信息摘要鉴权
rotor 提供多平台的加解密服务
shad NIAT 的安全哈希算法SHA
stringprepe 提供用于IP 协议的Unicode 字符串
textwrape 文本打包和填充
unicodedata Unicode 数据库