Python 学习笔记
其实Python我已经用了一些年了,用起来也比较顺手。但最近开始教自己的孩子学习Python时,还是发现了许多自己需要更新的知识。有些是自己没用过,不知道的,有些则是能让Python程序更加优雅,或者更加有效的。下面总结几点。
关于格式化字符串
我一般使用的方式是:
"One for %s, one for me." % name
这种方式能够正常工作,但建议的方式是:
'One for {name}, one for me.'.format(name=name)
或者简化为:
'One for {}, one for me.'.format(name)
sort 和 sorted的区别
首先进行一个简单的试验:
可以看到,sorted会将列表进行排序,并返回一个新的列表。而sort()则会将列表本身进行排序。在Python的函数中,尽量不要使用sort()方法,以避免改变传入的参数。就像别人借给你一样东西,肯定希望你完好无损的归还一样。
关于数组越界的问题
Python其实很聪明的,它知道如何判断数组越界,并会在数组越界时自动的帮你处理。比如,有些人的Python代码会这样写:
sorted_array = sorted(scores,reverse=True)
return sorted_array[0:3] if len(sorted_array)>=3 else sorted_array
其实完全不必,可以简化为:
return sorted(scores,reverse=True)[0:3]
强大的Python数组操作
举一个简单的例子:把如下字符串:
"1 2 3 4\n5 6 7 8\n9 8 7 6"
转换为一个二位数组:
1 2 3 4
5 6 7 8
9 8 7 6
可以先使用 splitlines:
s = "1 2 3 4\n5 6 7 8\n9 8 7 6"
>>> lines = s.splitlines()
>>> lines
['1 2 3 4', '5 6 7 8', '9 8 7 6']
然后再进一步处理:
>>> rows = [[int(v) for v in row.split()] for row in lines]
>>> rows
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 8, 7, 6]]
Comments