首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python List.count() 方法詳解:統計元素出現次數的實用技巧

     編輯:更多程式設計知識

count() 是 Python 列表內建方法,用於統計指定元素在列表中出現的次數。語法簡單、效能優異,是資料分析、去重驗證、頻率統計等場合的常用工具。

語法與參數

list.count(obj)
  • obj:要統計的目標元素(支援任意型別,透過 == 比較)

回傳值

回傳 整數,表示 obj 在列表中出現的次數。若不存在則回傳 0。

基本範例

#!/usr/bin/python
aList = [123, 'xyz', 'zara', 'abc', 123]
print("Count for 123 :", aList.count(123))   # 2
print("Count for zara :", aList.count('zara')) # 1
print("Count for 999 :", aList.count(999))   # 0(不存在)

核心特性

  • 精確匹配:使用 == 比較,1 == 1.0 為 True,但 '1' == 1 為 False
  • 大小寫敏感:字串比較區分大小寫
  • 不修改原列表:唯讀操作
  • 時間複雜度 O(n):需遍歷整個列表

進階應用場景

1. 找出重複元素

lst = [1, 2, 3, 2, 4, 3, 5, 2]
duplicates = [x for x in set(lst) if lst.count(x) > 1]
print(duplicates)  # [2, 3]

2. 統計所有元素頻率(建構頻率字典)

# 方法一:使用 count()(適合小列表)
lst = ['a', 'b', 'a', 'c', 'b', 'a']
freq = {x: lst.count(x) for x in set(lst)}
print(freq)  # {'a': 3, 'b': 2, 'c': 1}

# 方法二:使用 collections.Counter(大列表推薦,O(n) 一遍掃描)
from collections import Counter
freq = Counter(lst)
print(freq)  # Counter({'a': 3, 'b': 2, 'c': 1})

3. 驗證列表中是否有重複值

def has_duplicates(lst):
    return any(lst.count(x) > 1 for x in set(lst))

print(has_duplicates([1,2,3]))      # False
print(has_duplicates([1,2,2,3]))    # True

4. 多維列表/巢狀結構統計

matrix = [[1,2], [3,1], [1,4]]
# 統計子列表 [1,2] 出現次數
print(matrix.count([1,2]))  # 1

# 統計數字 1 在所有子列表中總出現次數
total = sum(sublist.count(1) for sublist in matrix)
print(total)  # 3

count() vs 其他統計方法效能比較

方法時間複雜度適用場景備註
list.count(x)O(n)單一元素統計、小列表每次呼叫掃描全列表
collections.CounterO(n)全元素頻率統計、大列表一次掃描建立所有計數
dict 手動累加O(n)自訂邏輯、串流處理單次遍歷,記憶體效率佳
pandas.value_counts()O(n)資料分析、大型資料集需安裝 pandas,功能最豐富

常見陷阱與注意事項

# 陷阱 1:列表裡有列表,count() 比較的是引用/內容?
lst = [[1], [1], [2]]
print(lst.count([1]))  # 2(內容相等即視為相同)

# 陷阱 2:可變物件做為元素時修改會影響統計
a = [1, 2]
lst = [a, a, [1,2]]
print(lst.count([1,2]))  # 3
a.append(3)
print(lst.count([1,2]))  # 0(內容已變!)
print(lst.count([1,2,3])) # 2

總結

count() 是統計列表中特定元素出現次數的標準方法,語法為 list.count(obj),回傳整數計數。適合單一元素查詢、小規模列表;大量統計或頻率分析建議改用 collections.Counter。理解其精確匹配規則、時間複雜度與可變物件陷阱,能正確應用於資料驗證、去重、頻率分析等實務場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved