衡量運行時間 很多時候你需要計算某段代碼執行所需的時間,可以使用 time 模塊來實現這個功能。 import time startTime = time.time() # write your code or functions calls endTime = time.time() totalT ...
衡量運行時間
很多時候你需要計算某段代碼執行所需的時間,可以使用 time
模塊來實現這個功能。
import time
startTime = time.time()
# write your code or functions calls
endTime = time.time()
totalTime = endTime - startTime
print("Total time required to execute code is =", totalTime)
# output
Total time required to execute code is = 4.76837158203125e-07
獲取兩個列表之間的差異
不使用迴圈,找出兩個列表的差異,可以使用集合的 symmetric_difference
方法。
list1 = ['Scott', 'Eric', 'Kelly', 'Emma', 'Smith']
list2 = ['Scott', 'Eric', 'Kelly']
set1 = set(list1)
set2 = set(list2)
list3 = list(set1.symmetric_difference(set2))
print(list3)
# output
['Emma', 'Smith']
翻轉字元串和列表
a = "zhihu"
print("Reverse is", a[::-1])
List = ["Shriya", "Lavina", "Sampreeti" ]
List.reverse()
print(List)
# output
Reverse is uhihz
['Sampreeti', 'Lavina', 'Shriya']
連接列表中的多個字元串
需要調用字元串的 join
方法,還可以設置間隔符,下麵為間隔符為空格的例子。
a = ["Python", "Is", "Great"]
print(" ".join(a))
# output
Python Is Great
同時使用多個比較運算符
在 C 中不能連續進行大小比較,在 Python 中就可以。
n = 10
result = 1 < n < 20
print(result)
result = 1 < n <= 9
print(result)
# output
True
False
列印導入模塊的文件路徑
import os
import socket
print(os)
print(socket)
# output
<module 'os' from 'D:\\Users\\xxx\\miniconda3\\envs\\xin\\lib\\os.py'>
<module 'socket' from 'D:\\Users\\xxx\\miniconda3\\envs\\xin\\lib\\socket.py'>
二維列表轉一維列表
只需使用 Itertools
一行代碼,即可將嵌套列表轉換為一個列表。
import itertools
a = [[1, 2], [3, 4], [5, 6]]
print(list(itertools.chain.from_iterable(a)))
# output
[1, 2, 3, 4, 5, 6]
Lambda 匿名函數用法
要聲明一些小功能,但不使用常規的聲明方式,可以用使用 lambda
。 python 中的 lambda 關鍵字為聲明匿名函數提供了快捷方式。
subtract = lambda x, y : x-y
subtract(5, 4)
# 可結合map reduce使用
列表中每個元素出現次數
Counter(list).most_common(n)
根據列表 / 字元串中每個元素出現次數,降序返回列表 / 字元串中的前 n 個元素,其中 n 是指定的數字。在元組中返回各個元素及其出現的次數。
# Code to find top 3 elements and their counts
# using most_common
from collections import Counter
arr = [1, 3, 4, 1, 2, 1, 1, 3, 4, 3, 5, 1, 2, 5, 3, 4, 5]
counter = Counter(arr)
top_three = counter.most_common(3)
print(top_three)
# output
[(1, 5), (3, 4), (4, 3)]
輸出結果為個數最多的 3 個數字,其中 1 出現 5 次,3 出現 4 次,4 出現 3 次。
找到列表中最常出現的值
test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]
print(max(set(test), key = test.count))
# max(test, key = test.count) 也可以實現同樣功能,但列表數據量大時會變慢
# s.count(x) x在s中出現的總次數
# output
4
檢查對象的記憶體使用情況
當你要使用任何數據結構(例如列表,字典或任何對象)來存儲值或記錄時,可以檢查數據結構使用了多少記憶體。
使用 sys
模塊中定義的 sys.getsizeof
函數獲取內置對象使用的記憶體,返回對象的大小(以位元組為單位)。
import sys
x = 1
print(sys.getsizeof(x))
# output
28
註意:sys.getsizeof
不會為第三方對象或用戶定義的對象返回正確的值。
字元串乘法拼接
n = 3
a = "Python"
print(a * n)
# output
PythonPythonPython
將多個列表同一位置元素zip在一起
當你需要連接許多迭代器對象(如列表)以獲取單個列表時,可以使用 zip
函數,結果顯示每個新列表每個元素,是所有迭代器對象同一位置值的元組。
Year = (1999, 2003, 2011, 2017)
Month = ("Mar", "Jun", "Jan", "Dec")
Day = (11,21,13,5)
print(zip(Year, Month, Day))
# output
[(1999, 'Mar', 11), (2003, 'Jun', 21), (2011, 'Jan', 13), (2017, 'Dec', 5)]
.get獲取字典中key對應的值,不存在則返回指定值
通過 []
方式獲取字典中的值時,如果鍵不存在則會報錯,可以使用字典的 get
函數,指定鍵不存在時,可以返回的值。
比如字典中有鍵 ‘c’,則返回對應的值,否則返回 3。
d = {'a':1, 'b':2}
print(d.get('c', 3))
# output
3
for...else...
Python 中的 for 迴圈可以使用 else
關鍵字,如果在 for 迴圈中遇到 break
跳出迴圈,則不執行 else
子句,否則執行。
for i in range(5):
pass
else:
pass
{**d1, **d2}
合併字典
d1 = {'a': 1}
d2 = {'b': 2}
print({**d1, **d2})
# output
{'a': 1, 'b': 2}
求列表中前 n 個最大 / 最小的數字
使用 heapq
返回任何列表中的前 n 個最小 / 最大元素,這裡 n 是指定的數字。
# Python code to find 3 largest and 4 smallest
# elements of a list.
import heapq
grades = [110, 25, 38, 49, 20, 95, 33, 87, 80, 90]
print(heapq.nlargest(3, grades))
print(heapq.nsmallest(4, grades))
# output
[110, 95, 90]
[20, 25, 33, 38]
輸出的第一行給出列表等級中存在的最大數字中的 3 個。 同樣,輸出的第二行將列印出列表等級中存在的最小元素中的 4 個,此功能的另一個特點是它不會忽略重覆值。
x, y = y, x
就地交換兩個數字
x, y = 10, 20
print(x, y)
x, y = y, x
print(x, y)
# output
10 20
20 10
set(listNumbers)
從列表中刪除重覆項
listNumbers = [20, 22, 24, 26, 28, 28, 20, 30, 24]
print("Original= ", listNumbers)
listNumbers = list(set(listNumbers))
print("After removing duplicate= ", listNumbers)
# output
Original= [20, 22, 24, 26, 28, 28, 20, 30, 24]
After removing duplicate= [20, 22, 24, 26, 28, 30]
比較兩個無序列表
假設你有兩個包含相同元素的列表,但是兩個列表中的元素順序都不同。可以使用 collections.Counter()
方法進行判斷,確定它們是否元素值都相同。
from collections import Counter
one = [33, 22, 11, 44, 55]
two = [22, 11, 44, 55, 33]
print("two lists are equal.", Counter(one) == Counter(two))
# output
two lists are equal.
檢查列表中的所有元素是否唯一
def isUnique(item):
tempSet = set()
return not any(i in tempSet or tempSet.add(i) for i in item)
listOne = [123, 345, 456, 23, 567]
print("All List elemtnts are Unique ", isUnique(listOne))
listTwo = [123, 345, 567, 23, 567]
print("All List elemtnts are Unique ", isUnique(listTwo))
# output
All List elemtnts are Unique True
All List elemtnts are Unique False
位元組轉換為字元串
要將位元組轉換為字元串,可以對 bytes
對象進行解碼以生成字元串。
byteVar = b"pynative"
str = str(byteVar.decode("utf-8"))
print("Byte to string is" , str )
# output
Byte to string is pynative
dict(zip(ItemId, names))
將兩個列表轉換成字典
例如你有兩個列表,一個列表包含鍵,第二個列表包含對應的值,想將這兩個列表轉換為一個字典。可以使用 zip
函數來進行實現。
ItemId = [54, 65, 76]
names = ["Hard Disk", "Laptop", "RAM"]
itemDictionary = dict(zip(ItemId, names))
print(itemDictionary)
# output
{54: 'Hard Disk', 65: 'Laptop', 76: 'RAM'}
設置小數位格式
你要顯示帶有 2 個小數位的任何浮點數。 例如 73.4(73.40)和 288.5400(88.54)。
number= 88.2345
print('{0:.2f}'.format(number))
s.ljust(10, '-')
字元串左對齊填充到10
左對齊函數 ljust
和右對齊函數 rjust
,都需要指定字元串長度,以及想要填充的字元,不指定則預設填充空格。
s = "12345"
print(s.ljust(10, '-'))
print(s.rjust(10, '0'))
# output
12345-----
0000012345
https://www.zhihu.com/people/zhao-xiao-de-93/posts