转载地址:http://www.lightxue.com/transforming-code-into-beautiful-idiomatic-python
用了python这么久,逐渐才了解到python语言的独特之处,根据这篇文章,列出了几个以后写代码要注意的点,提醒自己。
本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(python2.7)
这里只列出最好的几个方法,错误的例子不再举出
1.遍历一个范围的数字
for i in xrange(6):
print i
2.遍历集合
colors = [ '1',2','3']
for color in colors:
print color
3.反向遍历
for color in reserved(colors):
print color
4.遍历集合及其下标(字典也类似处理)
for i,color in enumerate(colors):
print i, color
5.遍历两个集合
for name,color in izip(names, colors):
print name, '----->', color
6.有序的遍历
for color in sorted(colors)
print color
7.自定义排序顺序
print sorted(colors, key=len) len可以用str.lower等代替
8.在循环内识别多个退出点
def find(seq, target):
for i, value in enumerate(seq):
if value == target:
break
else:
return -1
return 1
这里是把else当做nobreak,当for没有被break,循环结束会进入else
9.遍历字典的key
for key in dict:
print key
当你需要修改key的时候
for k in d.keys():
if k.startwith('r'):
del d[k]
10.遍历字典的key和value
for k, v in d.iteritems():
print k, '----->', v
11.key-value对构建字典
name = ['1', '2', '3']
color = ['red', 'blue', 'yellow']
d = dict(izip(names, colors))
12.字典分组
d = defaultdict(list)
for name in names:
key = len(name)
d[key].append(name)
# 这里是按照字段长度分组
13.连接字典
目前似乎2.7版本不支持chainmap函数
14.提高可读性
提高可读性的关键在于使代码和人类的思考方式一致
15.更新多个变量
x, y = y, x + y
x ,y , dx, dy = (, , , ,)
16.符号连接字符串
print ','.join(names)
17.更新序列
18.装饰器()
文件读写部分暂时跳过
with open('data.txt') as f
data = f.read()
可以取消文件读写关闭的过程