成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

11 個編程小技巧,使用起來更省心

開發 前端
正在學 Python 的你并不孤單,有我在這里陪著你每天學習一個 Python 小技術,你可以加我微信「somenzz」相互交流。今天我為初學者整理了 11 個編程小技巧,使用起來非常省心,相信你看完定會有所收獲。

[[426484]]

正在學 Python 的你并不孤單,有我在這里陪著你每天學習一個 Python 小技術。今天我為初學者整理了 11 個編程小技巧,使用起來非常省心,相信你看完定會有所收獲。

1、合并(Merge)兩個字典

有兩個字典,dict1、dict2,想把 dict2 的內容合并(Merge)到 dict1 中,可以使用 dict1.update(dict2)

  1. In [1]: dict1 = { 'a': 1, 'b': 2} 
  2.  
  3. In [2]: dict2 = { 'b': 3, 'd': 4} 
  4.  
  5. In [3]: dict1.update(dict2) 
  6.  
  7. In [4]: dict1 
  8. Out[4]: {'a': 1, 'b': 3, 'd': 4} 
  9.  
  10. In [5]:  

2、合并(Merge)兩個字典,但不能改變原始字典

有兩個字典,dict1、dict2,現在要把 dict1、dict2 的內容合并(Merge)到 dict3 中,有兩種方法:

方法一

  1. dict3 = {} 
  2. dict3.update(dict1) 
  3. dict3.update(dict2) 

方法二

  1. dict3 = {**dict1, **dict2} 

方法二使用了 ** 來解包字典,非常簡潔和優雅,推薦使用。

3、對包含字典的列表進行排序

假如有這樣的列表:

[{"name": "張三", "age": 30 },{"name": "李四", "age": 10 },{"name": "王武", "age": 15 }]

其內部元素是一個字典,如何進行自定義排序呢?比如按照 age 進行排序:

  1. list1 = [{"name""張三""age": 30 },{"name""李四""age": 10 },{"name""王武""age": 15 }] 
  2. list1.sort(key = lambda x: x["age"]) 
  3. print(list1) 
  4.  
  5. [{'name''李四''age': 10}, 
  6.  {'name''王武''age': 15}, 
  7.  {'name''張三''age': 30}] 

如果不能改變 list1 原有的次序,可以使用內建函數 sorted,sorted 返回排序后的結果,并不改變原始順序:

  1. list1 = [{"name""張三""age": 30 },{"name""李四""age": 10 },{"name""王武""age": 15 }] 
  2. sorted_list = sorted(list1, key = lambda x: x["age"]) 
  3. print(sorted_list) 
  4.  
  5. [{'name''李四''age': 10}, 
  6.  {'name''王武''age': 15}, 
  7.  {'name''張三''age': 30}] 

4、檢查文件是否存在

方法一,使用 os.path 模塊

  1. In [2]: import os 
  2.  
  3. In [3]: if os.path.exists("/usr/bin/passwd"): 
  4.    ...:     print("存在"
  5.    ...: 
  6. 存在 

方法二、使用 pathlib(推薦使用)

  1. In [4]: from pathlib import Path 
  2.  
  3. In [5]: if Path("/usr/bin/passwd").exists(): 
  4.    ...:     print("存在"
  5.    ...: 
  6. 存在 

關于 pathlib 為什么比 os.path 好用,可以閱讀求求你,別用 os.path 了。

5、獲取某個目錄最新的文件或目錄

  1. In [7]: import glob 
  2.    ...: import os 
  3.    ...: 
  4.    ...: list_of_files = glob.glob('/Users/aaron/*') # * means all if need specific format 
  5.    ...:  then *.csv 
  6.    ...: latest_file = max(list_of_files, key=os.path.getctime) 
  7.    ...: print(latest_file) 
  8.    ...: 
  9. /Users/aaron/web-service-gin 

更推薦你使用 pathlib

  1. from pathlib import Path 
  2. folder_path = Path('/Users/aaron'
  3. list_of_paths = folder_path.glob('*'
  4. latest_path = max(list_of_paths, key = lambda p: p.stat().st_ctime) 

6、隨機密碼生成器

將以下內容保存為 generate_random_password.py:

  1. import string 
  2. import random 
  3.  
  4. def generate_random_password(): 
  5.     ## 輸入密碼長度 
  6.     length = int(input("請輸入密碼長度:")) 
  7.      
  8.     ## 密碼字符范圍 
  9.     characters = list(string.ascii_letters + string.digits + "!@#$%^&*()"
  10.     random.shuffle(characters) 
  11.      
  12.     ## 隨機選擇字符 
  13.     password = [] 
  14.     for i in range(length): 
  15.         password.append(random.choice(characters)) 
  16.  
  17.     random.shuffle(password
  18.  
  19.     ## 現實生成的密碼 
  20.     print("".join(password)) 
  21.  
  22. if __name__ == "__main__"
  23.  
  24.     generate_random_password() 

執行結果

  1. python generate_random_password.py 
  2. 請輸入密碼長度:6 
  3. i3o!(o 

7、將兩個列表轉換為一個字典

  1. list1 = ['a''b''c'
  2. list2 = [1, 2, 3] 
  3. dictionary = dict(zip(list1, list2)) 
  4. print(dictionary) # {'a': 1, 'b': 2, 'c': 3} 

8、測量小代碼片段的執行時間

  1. import timeit 
  2. start = timeit.default_timer() 
  3. [i for i in range(100000)] 
  4. stop = timeit.default_timer() 
  5. print(stop - start) 

timeit 是標準庫提供的計時工具,還可以在命令行這樣使用:

示例 1:命令行界面來比較三個不同的表達式。

  1. $ python3 -m timeit '"-".join(str(n) for n in range(100))' 
  2. 10000 loops, best of 5: 30.2 usec per loop 
  3. $ python3 -m timeit '"-".join([str(n) for n in range(100)])' 
  4. 10000 loops, best of 5: 27.5 usec per loop 
  5. $ python3 -m timeit '"-".join(map(str, range(100)))' 
  6. 10000 loops, best of 5: 23.2 usec per loop 

示例 2:通過代碼中比較三個不同的表達式。

  1. >>> 
  2. >>> import timeit 
  3. >>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000) 
  4. 0.3018611848820001 
  5. >>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000) 
  6. 0.2727368790656328 
  7. >>> timeit.timeit('"-".join(map(str, range(100)))', number=10000) 
  8. 0.23702679807320237 

timeit 內部還可以傳入一個可調用對象:

  1. >>> def fun(): 
  2. ...     return "-".join(map(str, range(100))) 
  3. ...  
  4. >>> import timeit 
  5. >>> timeit.timeit(fun, number=10000) 
  6. 0.16171755199999893 
  7. >>>  

9、統計列表中頻率最高的元素

  1. def most_frequent(list): 
  2.   return max(set(list), key=list.count
  3.  
  4. mylist = [1,1,2,3,4,5,5,1,2,1,] 
  5. print("頻率最高的元素: ", most_frequent(mylist)) 

10、如何避免冗長的 if else 分支

簡單來說,就是借助于字典,把策略寫在字典里面,比如設計一個函數,計算兩個數的加、減、乘、除、n 次方

  1. def calculate(action_des: str, a:int,b:int) -> int
  2.  if action_des == '+'
  3.   return a+b 
  4.  elif action_dex == '-'
  5.   return a-b 
  6.  elif action_dex == '*'
  7.   return a*b 
  8.  elif action_dex == '/'
  9.   return a/b 
  10.  elif action_dex == '**'
  11.   return a**b 

借助于字典,可以不需要使用 if else:

  1. import operator 
  2.  
  3. def calculate(action_des: str, a:int,b:int) -> int
  4.  action = { 
  5.   "+": operator.add
  6.   "-": operator.sub, 
  7.   "/": operator.truediv, 
  8.   "*": operator.mul, 
  9.   "**": pow 
  10.     } 
  11.  return action[action_des](a, b) 

這也是設計模式中的策略模式的最小示例。

11、讓列表內的元素隨機排列一下

  1. import random 
  2.  
  3. MyList = [1, 2, 3, 4] 
  4. random.shuffle(MyList) 
  5. print(MyList) # [3, 4, 2, 1] 

最后

以上 11 個編程小技巧,如果有幫助,點個贊再滑走吧。

本文轉載自微信公眾號「 Python七號」,可以通過以下二維碼關注。轉載本文請聯系 Python七號公眾號。

 

責任編輯:武曉燕 來源: Python七號
相關推薦

2021-06-30 09:20:18

NuShell工具Linux

2021-04-18 07:18:31

Chrome

2024-01-30 00:40:10

2023-07-11 15:43:16

JavaScript技巧

2018-10-23 09:00:00

Linux日志

2020-05-17 16:19:59

JavaScript代碼開發

2024-06-21 08:21:44

2019-07-31 10:24:16

JavaScript瀏覽器口袋妖怪

2020-09-23 09:20:58

代碼Java字符串

2023-10-26 18:03:14

索引Python技巧

2012-12-17 09:54:08

2021-01-29 17:40:00

Flyme安卓手機安全

2022-06-21 14:30:16

Vim自定義Linux

2015-12-15 12:02:47

華為

2021-11-18 08:20:22

接口索引SQL

2021-03-10 09:54:43

RustNuShell系統

2024-10-25 15:48:21

GPUPyTorch編程

2022-09-20 07:46:15

重試組件retrying

2021-12-27 14:33:47

Python語言開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一本一道久久a久久精品综合 | 性福视频在线观看 | 欧美日韩国产一区 | 夜夜爽99久久国产综合精品女不卡 | 涩涩视频大全 | 成人在线不卡 | 欧美成人精品一区二区男人看 | 一区二区不卡 | 亚洲精品电影网在线观看 | 国产在线拍偷自揄拍视频 | 成人在线免费av | 国产激情福利 | 放个毛片看看 | 日韩精品一区二区三区中文在线 | 欧美成年黄网站色视频 | 精品国产一区二区三区久久狼黑人 | 在线国产视频观看 | 天天干天天操 | 在线欧美视频 | 日韩资源| a级黄色片在线观看 | 国产精品国产成人国产三级 | 午夜伦4480yy私人影院 | 亚洲国产一区二区三区在线观看 | 涩涩导航 | 国产日韩欧美精品 | 午夜在线视频 | 一区二区三区视频在线观看 | 久久中文字幕视频 | 人人天天操 | 国产精品久久久亚洲 | 91精品国产自产精品男人的天堂 | 国产aa | 久久久久久999 | 亚洲欧美日韩久久久 | 青草福利 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕在线视频观看 | 国产人免费人成免费视频 | 国产一区视频在线 | 精品久久久久久久久久久久久久 |