专业的编程技术博客社区

网站首页 > 博客文章 正文

Python 中 必须掌握的 20 个核心函数—len()函数

baijin 2025-08-02 17:23:49 博客文章 4 ℃ 0 评论

len()函数是Python中非常基础且重要的内置函数之一,用于返回对象的长度或元素个数。本文将全面详细地解析len()函数的各种用法和特性。

1. len()函数的基本用法

1.1 基本语法

len(object)
  • object:可以是序列(如字符串、列表、元组等)或集合(如字典、集合等)
  • 返回值:对象的长度(整数)

1.2 常见数据类型的长度计算

# 字符串
print(len("Hello"))  # 输出: 5

# 列表
print(len([1, 2, 3, 4]))  # 输出: 4

# 元组
print(len((1, 2, 3)))  # 输出: 3

# 字典
print(len({"name": "Alice", "age": 25}))  # 输出: 2

# 集合
print(len({1, 2, 3, 4, 5}))  # 输出: 5

2. len()函数的详细解析

2.1 字符串长度计算

对于字符串,len()返回字符的个数(注意:对于多字节字符如中文也按1计算)

print(len("Python"))  # 6
print(len("你好"))    # 2
print(len(""))      # 1 (表情符号也算作一个字符)

2.2 列表和元组长度

返回元素的数量:

fruits = ["apple", "banana", "cherry"]
print(len(fruits))  # 3

coordinates = (10.5, 20.3)
print(len(coordinates))  # 2

2.3 字典长度

返回键值对的数量:

person = {"name": "Bob", "age": 30, "city": "New York"}
print(len(person))  # 3

2.4 集合长度

返回唯一元素的数量:

unique_numbers = {1, 2, 2, 3, 3, 3}
print(len(unique_numbers))  # 3 (重复元素只计一次)

3. 特殊情况和注意事项

3.1 空容器的长度

print(len(""))      # 0 (空字符串)
print(len([]))      # 0 (空列表)
print(len({}))      # 0 (空字典)
print(len(set()))   # 0 (空集合)

3.2 不支持len()的对象

某些对象没有长度概念,调用len()会引发TypeError:

print(len(""))      # 0 (空字符串)
print(len([]))      # 0 (空列表)
print(len({}))      # 0 (空字典)
print(len(set()))   # 0 (空集合)

3.2 不支持len()的对象

某些对象没有长度概念,调用len()会引发TypeError:

class MyCollection:
    def __init__(self, items):
        self.items = items
    
    def __len__(self):
        return len(self.items)

my_col = MyCollection([1, 2, 3, 4, 5])
print(len(my_col))  # 5

4. len()函数的实际应用

4.1 检查容器是否为空

my_list = []

# 不好的写法
if len(my_list) == 0:
    print("List is empty")

# Pythonic的写法
if not my_list:
    print("List is empty")

4.2 循环中使用长度

fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
    print(f"Fruit {i+1}: {fruits[i]}")

4.3 数据验证

username = input("Enter username: ")
while len(username) < 4:
    print("Username must be at least 4 characters")
    username = input("Enter username: ")

4.4 切片操作结合长度

text = "Hello, World!"
middle = len(text) // 2
print(text[:middle])  # 前半部分
print(text[middle:])  # 后半部分

5. 性能考虑

len()函数的时间复杂度:

  • 列表、元组、字符串、集合:O(1) - 因为这些对象会存储自己的长度
  • 字典:O(1) - 同样会存储键值对数量
  • 自定义对象:取决于__len__()方法的实现

对于非常大的对象,len()仍然非常高效,因为Python不会真正遍历整个对象来计算长度。

6. 常见问题解答

6.1 len()计算的是字节数还是字符数?

对于字符串,len()计算的是Unicode字符数,不是字节数

print(len("你好"))  # 2个字符
print(len(""))  # 2个字符(虽然是表情符号)

要获取字节数,需要先编码:

print(len("你好".encode("utf-8")))  # 6个字节(UTF-8中每个中文3字节)

6.2 为什么len(dict)返回键的数量而不是值的数量?

因为字典的键是唯一的,而值可以重复。通常我们更关心有多少个唯一的键值对。

6.3 如何获取多维列表的长度?

对于多维列表,len()只返回第一维的长度:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(len(matrix))      # 3 (外层列表长度)
print(len(matrix[0]))   # 3 (第一个内层列表长度)

6.4 len()和size()有什么区别?

Python内置函数中没有size(),len()是标准的获取容器大小的函数。某些库(如NumPy)可能有size()方法,但这是库特定的。

7. 总结

len()函数是Python中极为常用的内置函数,主要特点包括:

  • 适用于大多数容器类型(字符串、列表、元组、字典、集合等)
  • 时间复杂度为O(1),非常高效
  • 可以用于自定义对象(通过实现__len__()方法)
  • 是检查容器是否为空的推荐方式

记住这些关键点:

  • 对字符串返回字符数(不是字节数)
  • 对字典返回键值对数量
  • 空容器的长度为0
  • 非容器对象会引发TypeError

掌握len()函数的使用,能够帮助你更有效地处理各种数据结构,编写更简洁、更Pythonic的代码。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表