python 語法糖太多 python 語法糖

2021-10-17 02:45:06 字數 1776 閱讀 2988

匿名函式

lamda表示式:

def add(x,y):

return x+y

等價於f = lamda x,y:x+y

f(1,2)

三元表示式:

wefx = 1

y = 2

c = x if x

map對映關係:

def square(x):

return x*x

list_x = [1,3,10]

list_r = map(square,list_x)

list_x = [1,3,10]

list_r = map( lamda x:x*x,list_x)

for x in list_x:

square(x)

map語句很快(可能for 迴圈那裡不是用的解釋性的語言,把它一次性存起來 編好了),但是有個明顯的問題,map格式轉成list格式的時間非常慢。可能for迴圈處理函式需要50ms,但是map語句只需要0.05ms,但是可能map轉list格式需要很久大概(20ms)

map操作物件不能用下標描述,'map' object is not subscriptable

但是map操作物件可以用for 迴圈迭代找到數值

時間測試:(比較list for 迴圈,map操作,numpy操作,torch tensor 操作,torch tensor cuda 操作)

f = lambda x : x*x*x

list_r = [i for i in range(1000000)]

print("device_count",torch.cuda.device_count())

t0 = time.time()

numpy_r = numpy.array(list_r)

t1 = time.time()

device = torch.device('cuda:0')

torch_r = torch.tensor(list_r)

torch_r = torch_r.to(device)

t2 = time.time()

torch_r = torch_r * torch_r *torch_r

t3 = time.time()

numpy_r = numpy_r *numpy_r*numpy_r

t4 = time.time()

list_res = map(f,list_r)

t5 = time.time()

print("t0:",(t1-t0)*1000)

print("t1:",(t2-t1)*1000)

print("t2:",(t3-t2)*1000)

print("t3:",(t4-t3)*1000)

print("t4:",(t5-t4)*1000)

##### result 使用 cuda

t0: 50.150156021118164

t1: 2310.8725547790527

t2: 0.3681182861328125

t3: 5.092620849609375

t4: 0.004291534423828125

### result 不使用 cuda

t0: 51.50794982910156

t1: 21.13056182861328

t2: 4.422187805175781

t3: 5.149364471435547

t4: 0.004291534423828125

cuda提高速度

Python 的 with 語法糖

python 內建了 sqlite3 模組,可以方便地呼叫 sqlite 資料庫。import sqlite3 conn sqlite3.connect test.db cur conn.cursor cur.execute create table students id bigint prima...

Python語法糖介紹

作為一門優秀的指令碼語言,python在語法層面提供了很多好玩又實用的語法,俗稱語法糖,正確的使用這些技巧能讓 看起來更優雅,更pythonic,這裡列舉幾個。usr bin env python3 defmain animals cat dog bird pig if dog in animals...

Python中語法糖及帶參語法糖

在python中,符號常被稱作語法糖 裝飾器 在某函式定義時,用以包裝該函式,以達到擷取,控制該函式的目的。def d f print d.k f 此處保留了傳進來的原函式 f def f x return k x 2 return f 此處不能寫成f x f是函式控制代碼,如果帶 則呼叫,這裡只返...