乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       禁忌石 2022-03-17

      在學(xué)習(xí)python中總有一些問題困擾我們:

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

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

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

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

      我建議對這些知識按以下進(jìn)行分類:

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

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

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

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

      要說完所有內(nèi)容文章會比較長,我會分幾篇進(jìn)行,這篇我們先說前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ù)很有用,但是當(dāng)對 Python 較新時,它們很容易被忽略

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

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

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

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


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

      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ù)外,我們還將在稍后學(xué)習(xí)中簡要介紹其他 46 個內(nèi)置函數(shù),也許最終會學(xué)習(xí)它,也可能不需要這些部分。

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

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

      print

      你可能已經(jīng)知道它的打印功能,但可能不知道 print 還可以接受的各種關(guān)鍵字參數(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

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

      str

      與許多其他編程語言不同,Python 沒有類型強(qiáng)制,因此你無法在 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ù)強(qiáng)制轉(zhuǎn)換為字符串,因此我們需要自己手動完成,使用內(nèi)置的 str 函數(shù)(從技術(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

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

      float

      需要轉(zhuǎn)換為數(shù)字的字符串實際上不是整數(shù), 就需要使用 float 而不是 int 進(jìn)行此轉(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ù)來強(qiáng)制浮點除法而不是整數(shù)除法?!罢麛?shù)除法”在 Python 3 中不再存在(除非你專門使用 // 運(yùn)算符),因此我們不再需要 float 來達(dá)到此目的。因此,如果在 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)遍歷一個迭代器并復(fù)制它的更通用的方法:

      >>> copy_of_squares = list(list_of_squares)

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

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

      使用 [] 被認(rèn)為更慣用,因為這些方括號 ([]) 實際上看起來像 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ù):

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

      一個鍵值元組列表(更準(zhǔn)確地說,是一個包含兩項迭代的迭代),在這種情況下,一個新的字典將從這些元組中構(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ù)還可以接受關(guān)鍵字參數(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)它更清楚地傳達(dá)了我們正在創(chuàng)建字典的事實。

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

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

      使用 {} 的 CPU 效率稍高一些,但更重要的是它更符合習(xí)慣:通常會看到花括號 ({}) 用于制作字典,但 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()

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

      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)。

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

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

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多