Python学习之高级特性
2015 10月 10日
学习Python的时候,有一些简洁的写法可以将很长的代码段缩减到最短,这样的写法也算是让Python比较优雅了。
Python高级特性
让你的Python更加Pythonic
切片操作
在读取list或者tuple部分元素的时候,一般的做法是通过下标进行读取,
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
L[0],L[1],L[2]
还有一种是通过for-in循环获得,也很累。针对需要制定索引范围内的操作,Python提供了切片操作符,
L[0:3]
# 取前三个元素
# 如果是0可以省略,
L[:3]
正序切片操作是以0开始的,同时,Python还支持倒序切片操作,倒序切片操作是以-1开始的,
L[-2:]
# 取倒数两位元素
L[-2:-1]
# 取倒数第二个元素
切片操作最多可以支持三个参数
L[0:4:2]
# 前四个元素,每隔2位取一个
可以使用切片的有list、tuple、string。
遍历方法
# 普通的遍历是使用for-in方法进行遍历,但是这样的做法只能在for判断中取出来index
# 而使用enumerate可以在for判断中同时取得index和obj
array = [1,2,3,4,5]
for aInt in xrange(len(array)):
print aInt,array[aInt]
for index,obj in enumerate(array):
print index,obj
for-in的简洁写法
# 老的for-in循环
L = []
for x in 'ABC':
L.append(x)
print L
# 新的for-in循环
L = [x for x in xrange(1,10)]
print L
# 双层for循环
# 把‘AB’和‘XYZ’分别取出来一个字母组合成新的字符串
L = [m + n for m in 'AB' for n in 'XYZ']
print L
寻找三元运算符的替代品
# 在C中有三元运算符(A?B:C)用来替换简单的if-else语句,但是在Python中是没有这样的运算符的,
# 所以最好的方法是找一个可以正确替换的,避免写这样的语句
a = 3
if int(a) > 2:
b = 2
else:
b = 1
print b
# 所以正确的写法是这样的,b = False if a > 2 else True
b = 2 if a > 2 else 1
print 'b:',b
创建字典
# 根据键值对数组创建字典的时候
keys = ['Name','Sex','Age']
values = ['Tim','Male',23]
dic = {}
# 一般的做法是这样,还是比较麻烦的
for index,key in enumerate(keys):
dic[key] = values[index]
print dic
dic = {}
# 而比较python的是使用zip,使用zip创建键值对,zip的方法是返回一个元组,
dic = dict(zip(keys,values))
print dic