目錄
- 檢視函數運作效率
- 判斷字典中鍵是否存在
- 元素互換
- 初始化清單
- 三元操作符進行條件指派
- 多行字元串
- 存儲清單元素到單個變量中
- 用代碼設定斷點
- FizzBuzz問題
- 同時疊代多個清單
- 清單轉換為字元串
- 疊代分組
- 更多技巧。。。
檢視函數運作效率
以下代碼會列印出abc函數裡調用了幾次其它函數, 各用了多少時間, 總共用了多少時間等資訊:
# -*- coding: utf-8 -*-
import profile
def abc():
for i in range(50):
print("i: %s" % str(i))
profile.run('abc()')
當然,如果隻想知道函數運作時間,也可以采用以下方法:
# -*- coding: utf-8 -*-
import time
def abc():
start = time.time()
for i in range(50):
print("i: %s" % str(i))
end = time.time()
print("time: %0.3f" % (end - start))
abc()
更多詳細用法可參考profile的官方說明。
判斷字典中鍵是否存在
以下代碼可以判斷一個鍵是否在字典中存在:
# -*- coding: utf-8 -*-
abc = {'a': 'a', 'b': 'b'}
def is_key_exist(key):
if abc.get(key, None): # 關鍵代碼
print(key + ' is exist')
else:
print(key + ' is not exist')
is_key_exist('b')
元素互換
以下代碼可以把a, b的值互換
# -*- coding: utf-8 -*-
a = 3
b = 5
a, b = b, a
初始化清單
在定義清單時進行初始化:
# -*- coding: utf-8 -*-
arr = ['a'] * 5
print(arr) # arr = ['a', 'a', 'a', 'a', 'a']
三元操作符進行條件指派
# -*- coding: utf-8 -*-
y = 2
x = 10 if y == 1 else 20
print(x) # x = 20
多行字元串
将字元串分為多行并且将整個字元串包含在括号中:
# -*- coding: utf-8 -*-
x = ("select"
" * "
"form"
" abc")
print(x) # select * form abc
存儲清單元素到單個變量中
# -*- coding: utf-8 -*-
lst = ['a', 'b', 'c']
x, y, z = lst # x=a y=b z=c
用代碼設定斷點
使用pdb 子產品可以直接在腳本中設定斷點:
# -*- coding: utf-8 -*-
import pdb
lst = ['a', 'b', 'c']
x, y, z = lst # x=a y=b z=c
pdb.set_trace() # 代碼運作後,執行會在此中斷。在控制代碼輸入'c'後,繼續執行。
print(x)
FizzBuzz問題
需求:列印數字1到100,3的倍數列印“Fizz”來替換這個數,5的倍數列印“Buzz”,對于既是3的倍數又是5的倍數的數字列印“FizzBuzz”。
for x in range(1, 101):
print("fizz"[x % 3 * len('fizz')::] + "buzz"[x % 5 * len('buzz')::] or x)
同時疊代多個清單
zip() 函數用于将可疊代的對象作為參數,将對象中對應的元素打包成一個個元組,然後傳回由這些元組組成的對象,這樣做的好處是節約了不少的記憶體。
# -*- coding: utf-8 -*-
a = [1, 2, 3]
b = [4, 5, 6]
for i, j in zip(a, b):
print(i + j) # 5, 7, 9
清單轉換為字元串
# -*- coding: utf-8 -*-
lst = ['a', 'b', 'c']
print('+'.join(lst)) # a+b+c
疊代分組
需求:有4名選手,分成兩兩一組進行比賽,有幾種分法?代碼如下:
# -*- coding: utf-8 -*-
from itertools import combinations
teams = ["player1", "player2", "player3", "player4"]
for game in combinations(teams, 2):
print(game)
# ('player1', 'player2')
# ('player1', 'player3')
# ('player1', 'player4')
# ('player2', 'player3')
# ('player2', 'player4')
# ('player3', 'player4')
更多用法,請檢視itertools庫官方說明。
更多技巧。。。
以後遇到好的技巧,會不斷的往該文章中更新,有需要的朋友可以收藏起來!