P vs. NP的示例
链式比较
P:
a = 3 b = 1 1
NP:
a = 3 b = 1 b >= 1 and b
真值测试
P:
name = 'Tim' langs = ['AS3', 'Lua', 'C'] info = {'name': 'Tim', 'sex': 'Male', 'age':23 } if name and langs and info: print('All True!') #All True!
NP:
if name != '' and len(langs) > 0 and info != {}: print('All True!') #All True!
字符串反转
P:
def reverse_str( s ): return s[::-1]
NP:
def reverse_str( s ): t = '' for x in xrange(len(s)-1,-1,-1): t += s[x] return t
字符串列表的连接
P:
strList = ["Python", "is", "good"] res = ' '.join(strList) #Python is good
NP:
res = '' for s in strList: res += s + ' ' #Python is good #最后还有个多余空格
列表求和,最大值,最小值,乘积
P:
numList = [1,2,3,4,5] sum = sum(numList) #sum = 15 maxNum = max(numList) #maxNum = 5 minNum = min(numList) #minNum = 1 from operator import mul prod = reduce(mul, numList, 1) #prod = 120 默认值传1以防空列表报错
NP:
sum = 0 maxNum = -float('inf') minNum = float('inf') prod = 1 for num in numList: if num > maxNum: maxNum = num if num
列表推导式
P:
l = [x*x for x in range(10) if x % 3 == 0] #l = [0, 9, 36, 81]
NP:
l = [] for x in range(10): if x % 3 == 0: l.append(x*x) #l = [0, 9, 36, 81]
字典的默认值
P:
dic = {'name':'Tim', 'age':23} dic['workage'] = dic.get('workage',0) + 1 #dic = {'age': 23, 'workage': 1, 'name': 'Tim'}
NP:
if 'workage' in dic: dic['workage'] += 1 else: dic['workage'] = 1 #dic = {'age': 23, 'workage': 1, 'name': 'Tim'}
for…else…语句
P:
for x in xrange(1,5): if x == 5: print 'find 5' break else: print 'can not find 5!' #can not find 5!
NP:
find = False for x in xrange(1,5): if x == 5: find = True print 'find 5' break if not find: print 'can not find 5!' #can not find 5!
三元符的替代
P:
a = 3 b = 2 if a > 2 else 1 #b = 2
NP:
if a > 2: b = 2 else: b = 1 #b = 2
Enumerate
P:
array = [1, 2, 3, 4, 5] for i, e in enumerate(array,0): print i, e #0 1 #1 2 #2 3 #3 4 #4 5
NP:
for i in xrange(len(array)): print i, array[i] #0 1 #1 2 #2 3 #3 4 #4 5
使用zip创建键值对
P:
keys = ['Name', 'Sex', 'Age'] values = ['Tim', 'Male', 23] dic = dict(zip(keys, values)) #{'Age': 23, 'Name': 'Tim', 'Sex': 'Male'}
NP:
dic = {} for i,e in enumerate(keys): dic[e] = values[i] #{'Age': 23, 'Name': 'Tim', 'Sex': 'Male'}
zip方法返回的是一个元组,用它来创建键值对,简单明了。
查看更多关于如何让你的Python代码更加pythonic?的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did86925