# 内建函数与操作技巧

URL: https://caijiao.org/python/ch04/builtins
Source: docs/python/ch04/builtins.md
Description: 本章节将深入探讨 Python 中的内建函数，帮助你理解和熟练运用 Python 提供的常用函数，提升代码效率和简洁性。

[Python](/python/) 提供了大量的内建函数，可以帮助开发者更高效地进行编程。这些内建函数涵盖了各种常见的操作，如数据类型转换、序列处理、数学计算等。在本章节中，我们将介绍常用的内建函数，并展示一些操作技巧。

## 常见的内建函数

### `len()` — 获取对象的长度

`len()` 函数返回对象（如字符串、列表、字典等）包含的元素数量。

```python
# 获取字符串长度
print(len("Hello, world!"))

# 获取列表长度
numbers = [1, 2, 3, 4]
print(len(numbers))
```

输出：

```
13
4
```

### `type()` — 获取对象的类型

`type()` 函数返回对象的类型，可以帮助你了解一个对象的具体类型。

```python
print(type(42))            # <class 'int'>
print(type("Hello"))       # <class 'str'>
print(type([1, 2, 3]))     # <class 'list'>
```

### `max()` 和 `min()` — 获取最大值和最小值

`max()` 和 `min()` 函数分别用于返回序列中的最大值和最小值。

```python
numbers = [5, 2, 8, 1]
print(max(numbers))  # 8
print(min(numbers))  # 1
```

### `sum()` — 求和

`sum()` 函数用于计算序列中所有元素的和。

```python
numbers = [1, 2, 3, 4, 5]
print(sum(numbers))  # 15
```

### `sorted()` — 排序

`sorted()` 函数用于返回排序后的列表，默认升序排序。它不会修改原序列，而是返回一个新列表。

```python
numbers = [4, 2, 3, 1, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 2, 3, 4, 5]
```

### `reversed()` — 反转

`reversed()` 函数返回一个反转的迭代器。

```python
numbers = [1, 2, 3, 4]
reversed_numbers = list(reversed(numbers))
print(reversed_numbers)  # [4, 3, 2, 1]
```

### `map()` 和 `filter()` — 映射与过滤

- `map()` 用于将函数应用于序列的每个元素。
- `filter()` 用于根据条件筛选出符合要求的元素。

```python
# 使用 map() 对列表中的每个数字平方
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # [1, 4, 9, 16]

# 使用 filter() 筛选出列表中大于 2 的数字
filtered_numbers = list(filter(lambda x: x > 2, numbers))
print(filtered_numbers)  # [3, 4]
```

## 操作技巧

### 列表推导式

列表推导式是一种简洁的创建列表的方式。它可以在一行代码中完成过滤和操作。

```python
# 创建一个包含平方数的列表
squares = [x ** 2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 使用条件判断创建列表
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]
```

### 交换变量的值

Python 中可以使用简洁的语法来交换两个变量的值，而不需要临时变量。

```python
a, b = 5, 10
a, b = b, a
print(a, b)  # 10 5
```

### 使用 `zip()` 同时遍历多个序列

`zip()` 函数用于将多个可迭代对象打包成一个元组，适合于同时遍历多个序列。

```python
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
    print(name, age)
```

输出：

```
Alice 25
Bob 30
Charlie 35
```

### 使用 `enumerate()` 获取元素索引

`enumerate()` 函数可以在遍历列表时同时获取元素的索引。

```python
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(index, fruit)
```

输出：

```
0 apple
1 banana
2 cherry
```

### 快速交换字典的键值

使用字典推导式，你可以快速交换字典的键和值。

```python
original_dict = {'a': 1, 'b': 2, 'c': 3}
swapped_dict = {value: key for key, value in original_dict.items()}
print(swapped_dict)  # {1: 'a', 2: 'b', 3: 'c'}
```

## 总结

- Python 提供了丰富的内建函数，涵盖了常见的操作，如求和、排序、映射和过滤等。
- 利用内建函数和操作技巧，可以编写更加简洁和高效的代码。
- 掌握列表推导式、`map()`、`filter()` 等技巧，能够提升你的编程能力，使得代码更加优雅。

通过灵活使用 Python 提供的内建函数和技巧，你将能在日常开发中提高工作效率，编写出更具可读性和可维护性的代码。
