深入理解 Python 的 `len()` 函數:原理、應用與進階技巧全指南

本教學全面解析 Python 的 `len()` 函數,從基本語法、支援型態、常見應用到進階技巧與自定義擴展,並針對新手常見錯誤提供排查建議。文章同時分享如何結合自動化工具提升團隊效率,適合專案經理、資料分析師與程式設計新手深入學習。

讓資訊整合更靈活

記錄、協作、成長 — Notion帶來比Excel更靈活的工作方式!
免費使用

200+模板自動化工作流程

從數據到成果,只需一步 — 用Monday代替Excel,效率倍增!
免費使用

AI智能團隊協作

AI驅動的ClickUp超越Excel,讓工作更精準快速!
免費使用

什麼是 Python 的 len() 函數?核心概念與適用範圍

在 Python 程式設計中,len() 是最常用也最基礎的內建函數之一。它的主要功能是「回傳物件的長度」,也就是序列(如字串、列表、元組等)或集合(如字典、集合 set)中包含的元素個數。這個函數能大幅簡化資料處理、驗證與自動化流程,是每位 Python 使用者必備的基礎工具。

注意:
Python 的 len() 與 Excel 的 LEN 函數雖然名稱相似,但用途完全不同。本文聚焦於 Python 程式語言,若你想了解 Excel 的 LEN 函數,請參考 Microsoft 官方說明

len() 函數的語法與支援資料型態

基本語法

len(object)
  • object:必須是支援「長度」概念的物件(如序列、集合等)。

支援的資料型態一覽

資料型態 範例 回傳內容
字串 (str) "hello" 字元數
列表 (list) [1, 2, 3] 元素個數
元組 (tuple) (1, 2, 3) 元素個數
字典 (dict) {"a": 1, "b": 2} 鍵值對數
集合 (set) {1, 2, 3} 元素個數
bytes/bytearray b'abc' 位元組數
range range(10) 產生的數字個數
自訂物件 實作 __len__() 方法的自訂類別 由方法決定

不支援:數字型態(int、float)、NoneType 等,使用時會拋出 TypeError。

常見應用場景與實務範例

1. 字串長度驗證與資料清理

username = "project_manager"
if len(username) > 12:
    print("使用者名稱過長,請重新輸入")
else:
    print("使用者名稱長度合格")

應用說明:常見於表單驗證、資料清洗、字串截斷等需求。

2. 列表與集合的元素計數

tasks = ["設計", "開發", "測試"]
if len(tasks) == 0:
    print("目前無待辦事項")
else:
    print(f"共有 {len(tasks)} 項任務")

應用說明專案管理、任務分配、資料分析等場景皆會用到。

3. 字典的鍵值對數量

project_info = {"名稱": "A專案", "負責人": "小明", "狀態": "進行中"}
print(len(project_info))  # 回傳 3

應用說明:快速統計資料欄位、設定檢查等。

4. 處理嵌套資料結構

team_members = [["Alice", "Bob"], ["Carol"], ["Dave", "Eve", "Frank"]]
print(len(team_members))         # 3(小組數)
print(len(team_members[2]))      # 3(第三組成員數)

應用說明:多層級資料結構的統計與遍歷。

5. 生成器與進階資料流

len() 不支援一般生成器(generator),但可用於 range 物件:

print(len(range(5, 15)))  # 回傳 10

補充:若需計算生成器產生的元素數量,可轉換為列表,但需注意記憶體消耗。

gen = (i for i in range(100))
print(len(list(gen)))  # 100

進階應用:結合 map、filter、pandas 等工具

結合 map/filter 處理資料

data = ["apple", "banana", "cherry", "date"]
filtered = filter(lambda x: len(x) > 5, data)
print(len(list(filtered)))  # 統計長度大於5的字串數

與 pandas 整合

在資料科學、專案管理自動化中,len() 常與 pandas 搭配:

import pandas as pd
df = pd.DataFrame({"name": ["Amy", "Ben", "Carl"], "score": [90, 85, 92]})
print(len(df))  # 回傳資料列數

專案協作實務建議
若需將 Python 處理結果自動同步至團隊協作平台(如 NotionMonday.comClickUp),可結合 API 或自動化腳本,提升資料整合與專案追蹤效率。

常見錯誤與排查技巧

錯誤類型與解決方法

常見錯誤情境 錯誤訊息 解決建議
對 int/float 使用 TypeError 僅能對序列、集合等型態使用
忘記加括號 TypeError 應為 len(object) 而非 len
生成器直接使用 TypeError 需轉為 list 再計算長度
自訂類別未實作方法 TypeError 類別需定義 __len__() 方法

錯誤示範:

num = 123
print(len(num))  # TypeError: object of type 'int' has no len()

正確寫法:

num_list = [123]
print(len(num_list))  # 1

自訂物件支援 len()len 方法實作

若你設計的類別也想支援 len(),只需實作 __len__ 方法:

class TaskGroup:
    def __init__(self, tasks):
        self.tasks = tasks

    def __len__(self):
        return len(self.tasks)

group = TaskGroup(["規劃", "執行", "驗收"])
print(len(group))  # 3

設計建議
__len__ 應回傳非負整數。
– 若物件無法明確定義長度,建議不要實作此方法。

FAQ:新手常見問題解答

Q1. len() 可以用來計算數字的位數嗎?

A:不行。len() 只適用於序列或集合。若需計算數字位數,請先轉為字串:len(str(12345))

Q2. 為什麼對生成器使用 len() 會出錯?

A:生成器沒有固定長度,需轉為列表後再計算,但這會消耗記憶體。

Q3. 字典的 len() 結果是什麼?

A:回傳「鍵值對」的數量。

Q4. 如何避免 TypeError: object of type 'int' has no len()

A:確認傳入 len() 的物件型態,僅對序列、集合或實作 __len__ 的物件使用。

小結:len() 在資料處理與自動化的價值

len() 是 Python 處理資料長度的核心工具,無論是字串驗證、列表統計、字典欄位檢查,還是進階資料流處理,都能大幅提升程式效率與可讀性。結合 NotionMonday.comClickUp 等協作平台,甚至可將 Python 腳本自動化成果無縫整合至團隊工作流,協助專案經理與知識工作者提升生產力。

若想進一步學習 Python 或資料處理自動化,建議參考 Coursera 的專業課程,系統性提升技能,讓你的專案管理與團隊協作更上一層樓。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

✨ 讓專案管理變簡單,團隊更強大!

在專案推進的每一步,效率就是競爭力。monday.com 整合進度追蹤、團隊協作與資源分配,讓你隨時掌握全局、快速解決問題。
全球18萬家專業團隊已經採用,你還在等什麼?