• <dd id="hdgin"><track id="hdgin"></track></dd>
  • <em id="hdgin"><tr id="hdgin"></tr></em>
  • <th id="hdgin"><track id="hdgin"><noframes id="hdgin"></noframes></track></th>
        <rp id="hdgin"><ruby id="hdgin"></ruby></rp>

        <legend id="hdgin"><noscript id="hdgin"><video id="hdgin"></video></noscript></legend>
          <dd id="hdgin"><track id="hdgin"></track></dd>
            首頁 Python教程Python 中 4 個高效的技巧!

            Python 中 4 個高效的技巧!

            運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
            領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

            今天我想和大家分享 4 個省時的 Python 技巧,可以節省 10~20% 的 Python 執行時間。

            反轉列表

            Python 中通常有兩種反轉列表的方法:切片或 reverse() 函數調用。這兩種方法都可以反轉列表,但需要注意的是內置函數 reverse() 會更改原始列表,而切片方法會創建一個新列表。

            但是他們的表現呢?哪種方式更有效?讓我們看一下下面的例子:

            使用切片:

            $ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist[::-1]'
            1000000 loops, best of 5: 15.6 usec per loop
            

            使用 reverse():

            $ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist.reverse()'
            1000000 loops, best of 5: 10.7 usec per loop
            

            這兩種方法都可以反轉列表,但需要注意的是內置函數 reverse() 會更改原始列表,而切片方法會創建一個新列表。

            顯然,內置函數 reverse() 比列表切片方法更快!

            交換兩個值

            用一行代碼交換兩個變量值是一種更具有 Python 風格的方法。

            與其他編程語言不同,Python 不需要使用臨時變量來交換兩個數字或值。舉個簡單的例子:

            variable_1 = 100 
            variable_2 = 500
            

            要交換 variable_1 和 variable_2 的值,只需要一行代碼。

            variable_1, variable_2 = variable_2, variable_1
            

            您也可以對字典使用相同的技巧:

            md[key_2], md[key_1] = md[key_1], md[key_2]
            

            該技巧可以避免多次迭代和復雜的數據轉換,從而減少執行時間。

            在函數內部循環

            我們都喜歡創建自定義函數來執行我們自己的特定任務。然后使用 for 循環遍歷這些函數,多次重復該任務。

            但是,在 for 循環中使用函數需要更長的執行時間,因為每次迭代都會調用該函數。

            相反,如果在函數內部實現了 for 循環,則該函數只會被調用一次。

            為了更清楚地解釋,讓我們舉個例子!

            首先創建一個簡單的字符串列表:

            list_of_strings = ['apple','orange','banana','pineapple','grape']
            

            創建兩個函數,函數內部和外部都有 for 循環,從簡單的開始。

            def only_function(x):
                new_string = x.capitalize()
                out_putstring = x + " " + new_string
                print(output_string)
            

            和一個帶有循環的 for 函數:

            def for_in_function(listofstrings):
                for x in list_of_strings:
                    new_string = x.capitalize()
                    output_string = x + " " + new_string
                    print(output_string)
            

            顯然,這兩個函數的輸出是一樣的。

            然后,讓我們比較一下,哪個更快?

            Python 中 4 個高效的技巧!插圖
            如您所見,在函數內使用 for 循環會稍微快一些。

            減少函數調用次數

            判斷對象的類型時,使用 isinstance() 最好,其次是對象類型標識 id(),對象值 type() 最后。

            # Check if num an int type
            type(num) == type(0) # Three function calls
            type(num) is type(0) # Two function calls
            isinstance(num,(int)) # One function call
            

            不要將重復操作的內容作為參數放在循環條件中,避免重復操作。

            # Each loop the len(a) will be called
            while i < len(a):
                statement
            # Only execute len(a) once
            m = len(a)
            while i < m:
                statement
            

            要在模塊 X 中使用函數或對象 Y,請直接使用 from X import Y 而不是 import X; then X.Y。這減少了使用 Y 時的一次查找(解釋器不必先查找 X 模塊,然后在 X 模塊的字典中查找 Y)。

            總而言之,你可以大量使用 Python 的內置函數。提高 Python 程序的速度,同時保持代碼簡潔易懂。

            如果想進一步了解 Python 的內置函數,可以參考下表,或查看以下網站(https://docs.python.org/3/library/functions.html):

            Python 中 4 個高效的技巧!插圖1

            鏈接:https://medium.com/geekculture/python-4-time-saving-tips-f48bd9e9d565
            子沐愛掃地譯

            Python 中 4 個高效的技巧!插圖2

            本文鏈接:http://m.abandonstatusquo.com/41253.html

            網友評論comments

            發表評論

            您的電子郵箱地址不會被公開。

            暫無評論

            Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
            掃二維碼
            掃二維碼
            返回頂部
            久久久久亚洲国内精品|亚洲一区二区在线观看综合无码|欧洲一区无码精品色|97伊人久久超碰|一级a爱片国产亚洲精品