1.什么是Pythonic
简单说来,Pythonic就是简单、优美、清晰,不要过分强调技巧,尽量使用 Python 已经提供的功能以及符合Python的思维方式。
执行 import this 可以看到:
1 | $import this |
总结而言:
美胜丑,显胜隐,简胜杂,杂胜乱,平胜陡,疏胜密。
找到简单问题的一个方法,最好是唯一的方法(正确的解决之道)。
难以解释的实现,源自不好的主意;如有非常棒的主意,它的实现肯定易于解释。
2. pythonic示例:
2.1 列表解析(List Comprehension)
1 | [expr for iter_var in iterable] |
如:
1 | N=[x*2 for x in range(10) if x>5] |
2.2 生成器表达式(Generator Expression)
1 | (expr for iter_var in iterable) |
如:
1 | N=(x*2 for x in range(10) if x>5) |
Generator类似于List Comprehension,但Generator避免了生成整个列表,它返回的是一个generator object(生成器表达式),并使用了按需调用的“惰性计算”(lazy evaluation),只有在检索时才被赋值(evaluated),所以在列表比较长的情况下改善了性能及内存占用。
2.3 使用.format代替%
1 | name = 'Joo' |
2.4 字符串拼接
1 | list1=('how','are','you') |
2.5 None判断
判断一个变量是否为空的时候,应该总是用is或者is not,而不要使用=
2.6 对象类型判断
对象类型的比较应该始终用isinstance()代替直接比较类型,如使用if isinstance(obj, int)代替if type(obj) is type(1)
2.7 字符串前后缀判断
在检查前缀或后缀时,用startswith()和endswith()代替对字符串进行切片,如使用if foo.startswith(‘bar’)替代 if foo[:3] == ‘bar’
2.8 变量值交换
使用a,b = b, a代替t=a; a=b; b=t
2.9 判断dict中是否有key
使用dict.has_key(key)代替key in dict
2.10 zip
使用zip将2个有对应关系的list构造一个dict
1 | name=['Tom','Jim'] |
2.11 使用set去掉list中重复数据
1 | list(set(oldlist)) |
2.12 读文件操作,使用with
1 | with open('a.txt','r') as f: |
2.13 输出数组的index和值
1 | list = ['a','b','c'] |
2.14 实现a?b:c
1 | return_value = True if a else False |
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章