日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间

發(fā)布時(shí)間:2023/12/19 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

希望你們可以將這些技巧運(yùn)用到項(xiàng)目中。盡管沒有運(yùn)行時(shí)的速度或性能優(yōu)勢,但是與從零開始實(shí)施此邏輯相比,這將為你節(jié)省大量時(shí)間。因此,言歸正傳,讓我們來看這三點(diǎn)吧:

1、拉姆達(dá)函數(shù)(Lambda Functions)

拉姆達(dá)函數(shù)非常強(qiáng)大。當(dāng)然,當(dāng)必須以相同的方式清理多個(gè)列時(shí),我們不會使用它,但這并不是經(jīng)常遇到的情況。通常情況下,每個(gè)屬性在清理后都需要自己的邏輯。?Lambda函數(shù)允許創(chuàng)建“匿名”函數(shù)。這基本上意味著可以快速生成特定函數(shù),而無需使用pythonsdef來正確定義函數(shù)。?盡管如此,請記住Lambda函數(shù)主要被設(shè)計(jì)成one-liners,因此它應(yīng)該用于簡單的東西。對于更復(fù)雜的邏輯,則需要使用常規(guī)函數(shù)。?里將展示兩個(gè)具體示例,通過這些示例,我們無需為所有項(xiàng)目定義函數(shù),從而可以節(jié)省許少時(shí)間。雖然第一個(gè)示例可能不會在現(xiàn)實(shí)中常用,但值得一提。這就是對數(shù)字求平方。

#regular function

def square_number(x):

res = x ** 2

return res# lambda function

square = lambda x: x ** 2# results

print('square_number(4): {}'.format(square_number(4)))

print('square lambda: {}'.format(square(4)))>>> square_number(4):16

>>> square lambda: 16

上面的代碼片段以常規(guī)方式和lambda函數(shù)的方式完成了相同邏輯的實(shí)現(xiàn)。雖然結(jié)果是一樣的,但是lambda的單行看起來舒服多了!?第二個(gè)例子是關(guān)于檢查數(shù)字是偶數(shù)或非偶數(shù):

#regular function

def is_even(x):

if x % 2 == 0:

return True

else:

return False

# lambda function

even = lambda x: x % 2 == 0# results

print('is_even(4): {}'.format(is_even(4)))

print('is_even(3): {}'.format(is_even(3)))

print('even(4): {}'.format(even(4)))

print('even(3): {}'.format(even(3)))>>> is_even(4): True

>>> is_even(3): False

>>> even(4): True

>>> even(3): False

再一次,同樣的邏輯以兩種方式實(shí)現(xiàn)。你來決定你喜歡哪一個(gè)吧。

2、列表解析(List Comprehensions)

簡單來說,列表解析使我們可以使用其他符號創(chuàng)建列表。可以將其視為括號內(nèi)的單行循環(huán)。?在做特征工程時(shí),使用列表解析很方便。例如,假設(shè)我們在通過分析電子郵件標(biāo)題來進(jìn)行垃圾郵件檢測,那么我們會想弄明白是否問號會在垃圾郵件中經(jīng)常出現(xiàn)。如果用列表解析來實(shí)現(xiàn)的話,這將是一項(xiàng)非常簡單的任務(wù)。?就不再進(jìn)行更多的理論解釋了。例子才是最重要的。?這里的例子選擇聲明一個(gè)常規(guī)函數(shù),該函數(shù)將檢查列表中以某個(gè)字符(在這種情況下為“ a”)開頭的項(xiàng)目。實(shí)施后,再用列表解析執(zhí)行相同的操作。猜猜哪個(gè)會寫起來更快呢?

lst =['Acer', 'Asus', 'Lenovo', 'HP']# regular function

def starts_with_a(lst):

valids = []

for word in lst:

if word[0].lower() == 'a':

valids.append(word)

return valids

# list comprehension

lst_comp = [word for word in lst if word[0].lower() == 'a']# results

print('starts_with_a: {}'.format(starts_with_a(lst)))

print('list_comprehension: {}'.format(lst_comp))>>> starts_with_a:['Acer', 'Asus']

>>> list_comprehension: ['Acer', 'Asus']

如果是第一次看到這樣的方式,語法可能會有點(diǎn)混亂。但是當(dāng)你每天都在寫這樣的函數(shù)時(shí),它們會越來越吸引你,看你能把多少復(fù)雜的東西應(yīng)用進(jìn)去。

3、Zip函數(shù)

這是在實(shí)踐中很少看到的內(nèi)置python方法之一。從數(shù)據(jù)科學(xué)家的角度來看,它使我們能夠同時(shí)迭代兩個(gè)或多個(gè)列表。在處理日期和時(shí)間時(shí),這可以派上用場。?例如,有一個(gè)屬性表示某個(gè)事件的開始時(shí)間,而第二個(gè)屬性表示該事件的結(jié)束時(shí)間時(shí),為了進(jìn)一步分析,幾乎總是需要計(jì)算它們之間的時(shí)間差。而到目前為止,zip函數(shù)是最簡單的方法。?例如,來比較一些虛構(gòu)公司和虛構(gòu)地區(qū)的一周銷售日期:

sales_north= [350, 287, 550, 891, 241, 653, 882]

sales_south = [551, 254, 901, 776, 105, 502, 976]for s1, s2 in zip(sales_north,sales_south):

print(s1 — s2)>>> -201

33

-351

115

136

151

-94

看看這有多么簡單吧。可以應(yīng)用相同的邏輯同時(shí)迭代3個(gè)數(shù)組,只需要在括號中添加“ s3”和其他一些列表名稱即可。?Pure Python真的非常強(qiáng)大。了解其功能后,就不再需要專門的庫來存放所有內(nèi)容了。這將幫助你成為一名更好的程序員。

總結(jié)

以上是生活随笔為你收集整理的python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。