一、內置方法——len()
Python中,獲取list長度最簡單的方法就是使用len()函數:
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length) # 輸出:5
這裡將列表[1, 2, 3, 4, 5]賦值給了my_list,然後使用內置函數len()來獲取列表的長度,即包含元素的個數。最後將獲取到的長度賦值給變數length並輸出結果。
同時,len()函數不僅可以用於列表,也可以用於元組、字元串及其他任何可迭代的對象。所以,無論是什麼類型的可迭代對象,通過使用這個方法,我們都可以很容易地獲取它的大小或長度。
二、使用方法——count()
除了使用len()函數之外,在Python中還有其他方法來獲取列表長度。例如,可以使用count()方法來統計列表中某個元素的出現次數,然後再通過出現次數來確定列表長度。
my_list = [1, 2, 3, 4, 5, 5, 5, 6]
length = my_list.count(my_list[0])
print(length) # 輸出:1
這裡創建了一個列表[1, 2, 3, 4, 5, 5, 5, 6],使用count()函數查找該列表中第一個元素(my_list[0])出現的次數。由於列表中只有一個1,所以count()函數返回值是1,即列表長度為1。
三、使用函數式編程——map()
除了上述方法之外,還有通過使用Python的函數式編程能力來獲取列表長度。
my_list = [1, 2, 3, 4, 5]
f = lambda x:x
length = len(list(map(f, my_list)))
print(length) # 輸出:5
這裡使用lambda表達式來創建匿名函數f,然後使用map()函數將列表中的每個元素傳遞給這個函數。最後,將map()函數返回的結果轉換成列表並使用len()函數獲取列表長度。
四、使用numpy庫——shape()
如果列表中包含的所有元素都是數字,並且將這個列錶轉換成numpy數組,那麼就可以使用numpy庫中的函數來獲取獲取列表長度了。這時可以使用shape()函數得到一個包含元素數量的元組。
import numpy as np
my_list = [1, 2, 3, 4, 5]
arr = np.array(my_list)
length = arr.shape[0]
print(length) # 輸出:5
這裡將列表[1, 2, 3, 4, 5]轉換成numpy數組,並使用arr.shape屬性獲取該數組的大小。由於這個數組只有一行(或一列),所以包含的元素數量就是shape()[0]。
五、使用timeit模塊來測試方法執行效率
為了確保演算法的功能和效率,Python通過提供timeit模塊提供了一種測試代碼執行時間的方法。
import timeit
# 使用len()函數計算列表長度
def method1():
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
return length
# 使用count()方法計算列表長度
def method2():
my_list = [1, 2, 3, 4, 5]
length = my_list.count(my_list[0])
return length
# 使用map()函數計算列表長度
def method3():
my_list = [1, 2, 3, 4, 5]
f = lambda x:x
length = len(list(map(f, my_list)))
return length
# 使用numpy庫的shape函數計算列表長度
def method4():
import numpy as np
my_list = [1, 2, 3, 4, 5]
arr = np.array(my_list)
length = arr.shape[0]
return length
t1 = timeit.Timer("method1()", "from __main__ import method1")
print("使用len()函數計算列表長度:", t1.timeit(number=1000000), "秒")
t2 = timeit.Timer("method2()", "from __main__ import method2")
print("使用count()方法計算列表長度:", t2.timeit(number=1000000), "秒")
t3 = timeit.Timer("method3()", "from __main__ import method3")
print("使用map()函數計算列表長度:", t3.timeit(number=1000000), "秒")
t4 = timeit.Timer("method4()", "from __main__ import method4")
print("使用numpy庫的shape函數計算列表長度:", t4.timeit(number=1000000), "秒")
以上代碼將前面介紹的4種方法分別封裝成函數,並通過timeit模塊進行了測試。每個方法都運行1,000,000次,並輸出它們的執行時間。
在我的電腦上,以上4種方法的執行時間分別是:
- 使用len()函數:1.220866799999993秒
- 使用count()方法:4.2473377秒
- 使用map()函數:4.1145067秒
- 使用numpy庫的shape函數:33.88291820000005秒
從測試結果可以看出,使用len()函數的方法是最快的,而使用numpy庫的shape()函數最慢,但這也可能由於測試代碼本身的問題導致。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257099.html