美图齐众专注资阳网站设计 资阳网站制作 资阳网站建设
资阳网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

非常有用的Python技巧

 函数连续调用

 
 
 
 
  1. def add(x): 
  2.     class AddNum(int): 
  3.         def __call__(self, x):
  4.             return AddNum(self.numerator + x)
  5.      return AddNum(x) 
  6. print add(2)(3)(5) 
  7. # 10 
  8. print add(2)(3)(4)(5)(6)(7) 
  9. # 27 
  10. # javascript 版 
  11. var add = function(x){ 
  12.     var addNum = function(x){ 
  13.         return add(addNum + x); 
  14.     }; 
  15.     addNum.toString = function(){ 
  16.         return x; 
  17.     } 
  18.     return addNum; 
  19. }
  20. add(2)(3)(5)//10 
  21. add(2)(3)(4)(5)(6)(7)//27

默认值陷阱

 
 
 
 
  1. >>> def evil(v=[]): 
  2. ...     v.append(1) 
  3. ...     print v
  4. ... 
  5. >>> evil() 
  6. [1] 
  7. >>> evil() 
  8. [1, 1]

读写csv文件

 
 
 
 
  1. import csv 
  2. with open('data.csv', 'rb') as f: 
  3.     reader = csv.reader(f) 
  4.     for row in reader:
  5.          print row 
  6. # 向csv文件写入 
  7. import csv 
  8. with open( 'data.csv', 'wb') as f: 
  9.     writer = csv.writer(f) 
  10.     writer.writerow(['name', 'address', 'age'])  # 单行写入 
  11.     data = [ 
  12.             ( 'xiaoming ','china','10'), 
  13.             ( 'Lily', 'USA', '12')]  
  14.     writer.writerows(data)  # 多行写入

数制转换

 
 
 
 
  1. >>> int('1000', 2) 
  2. >>> int('A', 16) 
  3. 10

格式化 json

 
 
 
 
  1. echo'{"k": "v"}' | python-m json.tool

list 扁平化

 
 
 
 
  1. list_ = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
  2. [k for i in list_ for k in i] #[1, 2, 3, 4, 5, 6, 7, 8, 9] 
  3. import numpy as np 
  4. print np.r_[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
  5. import itertools 
  6. print list(itertools.chain(*[[1, 2, 3], [4, 5, 6], [7, 8, 9]])) 
  7. sum(list_, []) 
  8. flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x] 
  9. flatten(list_)

list 合并

 
 
 
 
  1. >>> a = [1, 3, 5, 7, 9] 
  2. >>> b = [2, 3, 4, 5, 6] 
  3. >>> c = [5, 6, 7, 8, 9] 
  4. >>> list(set().union(a, b, c)) 
  5. [1, 2, 3, 4, 5, 6, 7, 8, 9]

出现次数最多的 2 个字母

 
 
 
 
  1. from collections import Counter 
  2. c = Counter('hello world') 
  3. print(c.most_common(2)) #[('l', 3), ('o', 2)]

谨慎使用

 
 
 
 
  1. eval("__import__('os').system('rm -rf /')", {})

置换矩阵

 
 
 
 
  1. matrix = [[1, 2, 3],[4, 5, 6]]
  2. res = zip( *matrix )   # res = [(1, 4), (2, 5), (3, 6)]

列表推导

 
 
 
 
  1. [item**2 for item in lst if item % 2] 
  2. map(lambda item: item ** 2, filter(lambda item: item % 2, lst)) 
  3. >>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) 
  4. ['1', '2', '3', '4', '5', '6', '7', '8', '9']

排列组合

 
 
 
 
  1. >>> for p in itertools.permutations([1, 2, 3, 4]): 
  2. ...     print ''.join(str(x) for x in p) 
  3. ... 
  4. 1234 
  5. 1243 
  6. 1324 
  7. 1342 
  8. 1423 
  9. 1432 
  10. 2134 
  11. 2143 
  12. 2314 
  13. 2341 
  14. 2413 
  15. 2431 
  16. 3124 
  17. 3142 
  18. 3214 
  19. 3241 
  20. 3412 
  21. 3421 
  22. 4123 
  23. 4132 
  24. 4213 
  25. 4231 
  26. 4312 
  27. 4321 
  28. >>> for c in itertools.combinations([1, 2, 3, 4, 5], 3): 
  29. ...     print ''.join(str(x) for x in c) 
  30. ... 
  31. 123 
  32. 124 
  33. 125 
  34. 134 
  35. 135 
  36. 145 
  37. 234 
  38. 235 
  39. 245 
  40. 345 
  41. >>> for c in itertools.combinations_with_replacement([1, 2, 3], 2): 
  42. ...     print ''.join(str(x) for x in c) 
  43. ... 
  44. 11 
  45. 12 
  46. 13 
  47. 22 
  48. 23 
  49. 33 
  50. >>> for p in itertools.product([1, 2, 3], [4, 5]): 
  51. (1, 4) 
  52. (1, 5) 
  53. (2, 4) 
  54. (2, 5) 
  55. (3, 4) 
  56. (3, 5)

默认字典

 
 
 
 
  1. >>> m = dict() 
  2. >>> m['a'] 
  3. Traceback (most recent call last): 
  4.   File "", line 1, in  
  5. KeyError: 'a' 
  6. >>> 
  7. >>> m = collections.defaultdict(int) 
  8. >>> m['a'] 
  9. >>> m['b'] 
  10. >>> m = collections.defaultdict(str) 
  11. >>> m['a'] 
  12. '' 
  13. >>> m['b'] += 'a' 
  14. >>> m['b'] 
  15. 'a' 
  16. >>> m = collections.defaultdict(lambda: '[default value]') 
  17. >>> m['a'] 
  18. '[default value]' 
  19. >>> m['b'] 
  20. '[default value]'

反转字典

 
 
 
 
  1. >>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} 
  2. >>> m 
  3. {'d': 4, 'a': 1, 'b': 2, 'c': 3} 
  4. >>> {v: k for k, v in m.items()} 
  5. {1: 'a', 2: 'b', 3: 'c', 4: 'd'} 

网站栏目:非常有用的Python技巧
文章链接:http://www.zsjierui.cn/article/dpoipej.html

其他资讯