您的位置:首页 > 编程语言 > Python开发

Beginning Python Chapter3

2015-11-30 16:12 344 查看
所有标准的序列操作(索引,分片,乘法,判断成员资格,求长度,取最值)对字符串同样适用,但是,字符串是不可变的,因此通过分片对字符串进行复制是不合法的。

格式化字符串的%部分称为转换说明符,他们标记需要插入值的位置,格式类型如下

转换类型含义
d,i带符号的十进制数
o不带符号的八进制数
u不带符号的十进制数
x不带符号的十六进制数(小写)
X不带符号的十六进制数(大些)
e科学计数法标识的浮点数(小写)
E科学计数法标识的浮点数(大写)
c单个字符
r使用repr转换的任意字符串对象
s使用str转换的任意字符串对象
print '%d+%d = %d' % (1, 1, 2)


字符串方法

函数名函数说明
find查找字符串,存在返回字符串索引,不存在返回-1
'123455'.find('123')
join拼接字符串,split的逆方法
['1','2','3'].join('+')
lower返回字符串的小写形式
'ABCD'.lower()
replace替换字符串
'abcde'.replace('a', '1')
split分割字符串,如果不提供任何参数,将默认分割标记为空格
strip去掉字符串两侧的空格
字典是python中唯一内建的映射类型,字典中的值并没有特殊的顺序,但是都存储在一个特定的Key中,键可以是数字,字符串,甚至是元组。一个key可以对应多个值,此时可以将多个值存入一个序列中。python的字典是
{key:value, key:value}
形式,字典的键类型可以是任意类型,当键不存在时,使用索引直接赋值,会将这个key添加到字典中,当使用关键字 in 验证字典时,验证的是key是否在字典中。

dic = {'name' : 'king', 'age' : 12}
print 'my name is %(name)s, age is %(age)s' % dic
my name is king, age is 12
注意 %(name)s后面的s不能去掉,否则报错


字典的方法:

函数名说明
clear清除字典中的所有项,这个clear是直接清除字典指向的数据,而不是对字典赋值一个{}的字典
copy对字典的拷贝,这个是浅拷贝,拷贝出来的对象和之前指向同一块地址空间
deepcopy对字典的拷贝,深拷贝
fromkey使用给定的键创建新的字典,创建字典的一种便捷操作
{}.fromkey(['a','b','c'])
,
{}.fromkey('abc')
效果一样,结果都是
{'a':None, 'b':None, 'c':None}
, 如果不希望默认值为
None
,可以指定默认值,
{}.fromkey('abc','unknow'), {'a' : 'unknow', 'b' : 'unkonw', 'c' : 'unknow'},
使用fromkey指定默认值时,默认值只能设置一个,不能设置多个
get得到一个指定键的值,当在字典中这个键值不存在时返回None,不会抛出异常。get也可以指定默认值
{a:'a'}.get('b':'NoKey')
结果为NoKey
has_key判断字典中是否存在key效果和in相同,在Python3.0中不在包含这个函数
item, iteritemsitems方法将所有的字典项以列表方式返回,列表的每一项都来自于(键,值)
key, iterkeys返回字典中所有的key
pop获取指定键的值,并同时将这个键从字典中删
popitem随机删除一个key和value的值,并将对应的值返回
setdefault设置key对应的值,当键不存在时,setdefault返回默认并且相应的更新字典,如果键存在,那么就返回与其对应的值,单不改变字典,默认值是可选的,如果不设定默认使用None
update利用一个字典去更新另一个字典, a.update(b), 使用b的键值信息更新a, 改变的是a的键值信息
value, itervalue返回字典中值得集合
dic = {'name' : 'king', 'age' : 12}
dica = {'name' : 'sky', 'sex':'boy'}
dic.update(dica)
print dic
print dica
for item in dic.key():
print item + ' ' + str(dic[item])
print dic.get('name')
dic.pop('name')
print dic
{'age':12, 'name':'king', 'name':'sky', 'sex':'boy'}
{'name':'sky', 'sex':'boy'}
age 12
name king
name sky
sex boy
sky
{'age':12, 'name':'king', 'sex':'boy'}


当把其他模块的某些函数导入到当前文件中时,可以给指定的函数起一个别名,这和mysql的别名机制很相似,
import math as mymath


python允许同时对多个变量赋不同的值,这个在交换两个变量值时候非常方便

a, b, c = 1, 2, 3

print a, b, c

a, b = b, a

print a,  b, c

1 2 3

2 1 3


a, b, c, *d = [1,2,3,4,5,6]

print a,b,c,d

1 2 3 [4,5,6]

python3.0的解包特性,并未实际编码测试过,答案不确定正确。


python支持链式赋值,即x = y = z = 1

python中的布尔值,标准值False和None,所有类型的数字0(包括浮点型,长整形和其他类型),空序列,以及空的字典都可以作为False,但是尽管[]和”“都是假值,但是他们本身并不相等,也就是说[] != “”,对于其他类型的假值对象也是如此。

循环遍历数组

for key, value in {'name' : 'king', 'age', 12}.items():
print key, value


zip函数可以将多个列表进行压缩合并成一个列表,方便进行并行迭代

name = ['king', 'sky']
age = [12, 13]
print zip(name, age)
[('king', 12), ('sky', 13)]

name = ['king', 'sky', 'array']
age = [12, 13]
print zip(name, age)
[('king', 12), ('sky', 13)]

name = ['king', 'sky']
age = [12, 13, 14]
print zip(name, age)
[('king', 12), ('sky', 13)]

相当于按照位置对应出的结果,并不是获得的笛卡儿积,当长度不想等时,最小的序列用完时候就停止了。


列推倒式是一个轻量级的循环,是利用其他列表创建新列表的一种方法,

[0, 2, 4, 6, 8]


exec和eval: 简单的说是将字符串当作python语句来执行

eval('1 + 2')
输出结果3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: