目錄
Toggle什麼是 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 處理結果自動同步至團隊協作平台(如 Notion、Monday.com、ClickUp),可結合 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 處理資料長度的核心工具,無論是字串驗證、列表統計、字典欄位檢查,還是進階資料流處理,都能大幅提升程式效率與可讀性。結合 Notion、Monday.com、ClickUp 等協作平台,甚至可將 Python 腳本自動化成果無縫整合至團隊工作流,協助專案經理與知識工作者提升生產力。
若想進一步學習 Python 或資料處理自動化,建議參考 Coursera 的專業課程,系統性提升技能,讓你的專案管理與團隊協作更上一層樓。