免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python這些內(nèi)建函數(shù)你學廢了嗎?

在學習python中總有一些問題困擾我們:

Python中有這么多函數(shù),記住所有這些的最好方法是什么?

學習我們?nèi)粘P枰暮瘮?shù)(如enumerate range)的最佳方法是什么?

你怎么知道用 Python 解決問題的所有方法?你會記住它們嗎?

實際上PyPI 上有幾十個內(nèi)置函數(shù)和類,數(shù)百個工具捆綁在 Python 的標準庫中,還有數(shù)千個第三方庫。沒有人能記住所有這些東西。

我建議對這些知識按以下進行分類:

有些內(nèi)容我們應該記住,以便我熟悉它們

有些內(nèi)容我們應該知道,,以便我以后可以更有效地查找它們

有些內(nèi)容除非有一天我需要它們,否則我根本不應該花費太長時間去研究它們。

考慮到這種方法,我們將瀏覽 Python 文檔中的內(nèi)置函數(shù)頁面。

要說完所有內(nèi)容文章會比較長,我會分幾篇進行,這篇我們先說前10個最通用的內(nèi)在函數(shù),所以如果你時間緊迫或特別想看某個內(nèi)置函數(shù),你不必逐一查看,可以直接定位到你感興趣的內(nèi)容上:

我估計大多數(shù) Python 開發(fā)人員只需要大約 30 個內(nèi)置函數(shù),但其中 30 個取決于實際使用Python 所做的事情。

我們?nèi)值姆绞絹砜纯?Python 的所有 71 個內(nèi)置函數(shù)。

我將嘗試將這些內(nèi)置插件分為五類:

眾所周知的內(nèi)置插件:大多數(shù)較新的Pythonistas 很快就迫不及待地接觸到這些內(nèi)置插件

被新的Pythonistas忽略:了解這些函數(shù)很有用,但是當對 Python 較新時,它們很容易被忽略

稍后再學習:這些內(nèi)置插件通常很有用,但會在需要時/如果需要它們時找到它們

也許最終會學習這些:這些可以派上用場,但僅限于特定情況

可能不需要這些:除非正在做一些相當專業(yè)的事情,否則不太可能需要這些

第 1 類和第2 類中的內(nèi)置函數(shù)是幾乎所有 Python 程序員最終都應該學習的基本內(nèi)置函數(shù)。


第 3 類和第 4 類中的內(nèi)置程序是專門的內(nèi)置程序,它們通常非常有用,但對它們的需求會因你對 Python 的使用而異。第 5 類是神秘的內(nèi)置插件,當你需要它們時可能會非常方便,但許多 Python 程序員可能永遠不需要。

Pythonistas的注意事項:我將所有這些內(nèi)置函數(shù)稱為函數(shù),但其中 27 個實際上不是函數(shù)。

眾所周知的內(nèi)置函數(shù)(可能大家已經(jīng)知道):

printlenstrintfloatlisttupledictsetrange

新的 Python 程序員經(jīng)常忽略的內(nèi)置函數(shù):

sumenumeratezipboolreversedsortedminmaxanyall

還有 5 個通常被忽視的內(nèi)置插件,我建議了解這些插件,因為它們使調(diào)試更容易:

  1. dir
  2. vars
  3. breakpoint
  4. type
  5. help

除了上面的 25 個內(nèi)置函數(shù)外,我們還將在稍后學習中簡要介紹其他 46 個內(nèi)置函數(shù),也許最終會學習它,也可能不需要這些部分。

10個常見的內(nèi)置函數(shù)

如果你一直在編寫 Python 代碼,那么這些內(nèi)置函數(shù)可能已經(jīng)很熟悉了。

print

你可能已經(jīng)知道它的打印功能,但可能不知道 print 還可以接受的各種關鍵字參數(shù):

>>> words = ['Welcome', 'to', 'Python']>>> print(words)['Welcome', 'to', 'Python']>>> print(*words, end='!\n')Welcome to Python!>>> print(*words, sep='\n')WelcometoPython

你可以自己測試下。

len

在 Python 中,我們不寫 my_list.length() 或 my_string.length 之類的東西;相反,我們奇怪地(至少對于新的 Pythonistas)用 len(my_list) 和 len(my_string)。

>>> words = ['Welcome', 'to', 'Python']>>> len(words)3

不管你是否喜歡這個類似運算符的 len 函數(shù),你都必須使用了,所以你需要習慣它。

str

與許多其他編程語言不同,Python 沒有類型強制,因此你無法在 Python 中連接字符串和數(shù)字。

>>> version = 3>>> 'Python ' + versionTraceback (most recent call last): File '<stdin>', line 1, in <module>TypeError: can only concatenate str (not 'int') to str

Python 拒絕將 3 個整數(shù)強制轉(zhuǎn)換為字符串,因此我們需要自己手動完成,使用內(nèi)置的 str 函數(shù)(從技術上講是類,但正如我所說,我將調(diào)用這些函數(shù)):

>>> version = 3>>> 'Python ' + str(version)'Python 3'

int

你是否有用戶輸入并需要將其轉(zhuǎn)換為數(shù)字?你需要 int 函數(shù)!

int 函數(shù)可以將字符串轉(zhuǎn)換為整數(shù):

>>> program_name = 'Python 3'>>> version_number = program_name.split()[-1]>>> int(version_number)3

還可以使用 int 將浮點數(shù)截斷為整數(shù):

>>> from math import sqrt>>> sqrt(28)5.291502622129181>>> int(sqrt(28))5

請注意,如果需要在除法時截斷, // 運算符可能更合適(盡管這對負數(shù)的工作方式不同):int(3 / 2) == 3 // 2。

float

需要轉(zhuǎn)換為數(shù)字的字符串實際上不是整數(shù), 就需要使用 float 而不是 int 進行此轉(zhuǎn)換。

>>> program_name = 'Python 3'>>> version_number = program_name.split()[-1]>>> float(version_number)3.0>>> pi_digits = '3.141592653589793238462643383279502884197169399375'>>> len(pi_digits)50>>> float(pi_digits)3.141592653589793

還可以使用 float 將整數(shù)轉(zhuǎn)換為浮點數(shù)。

在 Python 2 中,我們曾經(jīng)使用 float 將整數(shù)轉(zhuǎn)換為浮點數(shù)來強制浮點除法而不是整數(shù)除法?!罢麛?shù)除法”在 Python 3 中不再存在(除非你專門使用 // 運算符),因此我們不再需要 float 來達到此目的。因此,如果在 Python 3 代碼中看到 float(x) / y,則可以將其更改為僅 x / y。

list

列表函數(shù)這樣做:

>>> numbers = [2, 1, 3, 5, 8]>>> squares = (n**2 for n in numbers)>>> squares<generator object <genexpr> at 0x7fd52dbd5930>>>> list_of_squares = list(squares)>>> list_of_squares[4, 1, 9, 25, 64]

如果你知道正在使用列表,則可以使用 copy 方法制作列表的新副本:

>>> copy_of_squares = list_of_squares.copy()

但是如果你不知道你正在使用的迭代器是什么,列表函數(shù)是循環(huán)遍歷一個迭代器并復制它的更通用的方法:

>>> copy_of_squares = list(list_of_squares)

也可以為此使用列表推導,但如果是新手我不建議這樣做。

>>> my_list = list() # Don't do this>>> my_list = [] # Do this instead

使用 [] 被認為更慣用,因為這些方括號 ([]) 實際上看起來像 Python 列表。

tuple

tuple 函數(shù)與 list 函數(shù)非常相似,不同之處在于它生成元組:

>>> numbers = [2, 1, 3, 4, 7]>>> tuple(numbers)(2, 1, 3, 4, 7)

如果你需要一個元組而不是一個列表,因為正在嘗試創(chuàng)建一個可散列的集合以在字典鍵中使用,例如,將希望通過列表訪問元組。

dict

dict 函數(shù)創(chuàng)建一個新字典。

與 list 和 tuple 類似,dict 函數(shù)等效于循環(huán)遍歷鍵值對的可迭代對象并從中創(chuàng)建字典。

給定一個包含兩項元組的列表:

>>> color_counts = [('red', 2), ('green', 1), ('blue', 3), ('purple', 5)]>>> colors = {}>>> for color, n in color_counts:... colors[color] = n...>>> colors{'red': 2, 'green': 1, 'blue' 3, 'purple': 5}

用dict函數(shù)替換:

>>> colors = dict(color_counts)>>> colors{'red': 2, 'green': 1, 'blue' 3, 'purple': 5}

dict 函數(shù)接受兩種類型的參數(shù):

另一個字典(映射是通用術語),在這種情況下,該字典將被復制

一個鍵值元組列表(更準確地說,是一個包含兩項迭代的迭代),在這種情況下,一個新的字典將從這些元組中構(gòu)造出來

所以這也有效:

>>> colors{'red': 2, 'green': 1, 'blue' 3, 'purple': 5}>>> new_dictionary = dict(colors)>>> new_dictionary{'red': 2, 'green': 1, 'blue' 3, 'purple': 5}

dict 函數(shù)還可以接受關鍵字參數(shù)來制作帶有基于字符串的鍵的字典:

>>> person = dict(name='Trey Hunner', profession='Python Trainer')>>> person{'name': 'Trey Hunner', 'profession': 'Python Trainer'}

但我更喜歡使用字典文字來代替:

>>> person = {'name': 'Trey Hunner', 'profession': 'Python Trainer'}>>> person{'name': 'Trey Hunner', 'profession': 'Python Trainer'}

字典字面量語法更靈活,速度也更快,但最重要的是,我發(fā)現(xiàn)它更清楚地傳達了我們正在創(chuàng)建字典的事實。

與列表和元組一樣,空字典也應該使用文字語法來制作:

>>> my_list = dict()  # Don't do this>>> my_list = {}  # Do this instead

使用 {} 的 CPU 效率稍高一些,但更重要的是它更符合習慣:通常會看到花括號 ({}) 用于制作字典,但 dict 的使用頻率要低得多。

set

set 函數(shù)創(chuàng)建一個新集合。它接受一個可哈希值(字符串、數(shù)字或其他不可變類型)的迭代并返回一個集合:

>>> numbers = [1, 1, 2, 3, 5, 8]>>> set(numbers){1, 2, 3, 5, 8}

沒有辦法用 {} 集合字面量語法創(chuàng)建一個空集(普通的 {} 創(chuàng)建一個字典),所以 set 函數(shù)是創(chuàng)建一個空集的唯一方法:

>>> numbers = set()>>> numbersset()

實際上這是一個不對,因為我們有這個:

>>> {*()} # This makes an empty setset()

但是這種語法令人困惑(它依賴于 * 運算符的一個較少使用的功能),所以我不推薦它。

range

range 函數(shù)為我們提供了一個 range 對象,它表示一個數(shù)字范圍:

>>> range(10_000)range(0, 10000)>>> range(-1_000_000_000, 1_000_000_000)range(-1000000000, 1000000000)

生成的數(shù)字范圍包括起始數(shù)字,但不包括終止數(shù)字(范圍(0, 10)不包括 10)。

當想循環(huán)數(shù)字時,范圍函數(shù)很有用。

>>> for n in range(0, 50, 10):... print(n)...010203040

一個常見的用例是執(zhí)行 n 次操作(順便說一下,這是一個列表生成式):

first_five = [get_things() for _ in range(5)]

Python 2 的 range 函數(shù)返回一個列表,這意味著上面的表達式會產(chǎn)生非常大的列表。Python 3 的范圍與 Python 2 的 xrange 類似(盡管它們有點不同),因為當我們遍歷這些范圍對象時,數(shù)字是惰性計算的,想必Python3的方式更好。

以上就是最常用的python內(nèi)建函數(shù)使用了,接下來一篇講解釋另外10有用的內(nèi)建函數(shù)。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
我珍藏的一些好的Python代碼,技巧,抓緊時間收藏!
記錄一下iter()的用法
python基礎篇: 詳解 Python 字典類型內(nèi)置方法
新手上路必學的Python函數(shù)基礎知識,全在這里了(多段代碼舉例)
這招可以讓Pandas 數(shù)據(jù)幀處理速度提高400倍!
Python3內(nèi)置函數(shù)enumerate()
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服