Python学习之路(十三)-常用函数的使用,及优化

Python 语言中有一些常用的函数,它们在日常编程中非常实用

文章目录


1. map() 函数

使用方式

map() 函数将一个函数应用于可迭代对象(如列表、元组等)的所有元素,并返回一个新的可迭代对象。

python 复制代码
# 示例:将列表中的每个数字平方
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出:[1, 4, 9, 16]
优化建议
  • 当需要对大量数据进行简单操作时,map() 比显式的 for 循环更简洁。
  • 如果逻辑较复杂,优先使用 for 循环以提高代码可读性。
  • 可以结合 lambda 表达式实现简洁的匿名函数。

2. filter() 函数

使用方式

filter() 函数用于过滤序列,保留满足条件的元素。

python 复制代码
# 示例:筛选出偶数
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出:[2, 4]
优化建议
  • map() 类似,适用于简单的过滤逻辑。
  • 对于复杂的判断逻辑,可以定义单独的函数来替代 lambda 表达式。

3. reduce() 函数

使用方式

reduce() 函数需要从 functools 模块导入,它将一个函数累积地应用到可迭代对象的所有元素上,最终得到一个单一的结果。

python 复制代码
from functools import reduce

# 示例:计算列表所有元素的乘积
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 输出:24
优化建议
  • 适合用于累加、累乘等场景。
  • 注意处理空列表的情况,避免引发异常。

4. zip() 函数

使用方式

zip() 函数将多个可迭代对象按位置组合成一个元组的列表。

python 复制代码
# 示例:将两个列表合并为元组列表
names = ["Alice", "Bob"]
scores = [85, 90]
combined = list(zip(names, scores))
print(combined)  # 输出:[('Alice', 85), ('Bob', 90)]
优化建议
  • 在处理多个并行数据时非常有用。
  • 如果输入的长度不一致,结果会以最短的为准。

5. enumerate() 函数

使用方式

enumerate() 函数用于遍历可迭代对象的同时获取索引和值。

python 复制代码
# 示例:打印列表的索引和值
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(index, fruit)
优化建议
  • 替代传统的 for i in range(len(...)) 写法,代码更简洁。
  • 提高可读性,尤其在需要索引的场景中。

6. sorted()list.sort() 函数

使用方式

sorted() 返回排序后的新列表,而 list.sort() 会原地修改原始列表。

python 复制代码
# 示例:对列表进行排序
numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出:[1, 2, 3, 4]

# 原地排序
numbers.sort()
print(numbers)  # 输出:[1, 2, 3, 4]
优化建议
  • 使用 key 参数自定义排序规则(例如按字符串长度排序)。
  • 对大型数据集排序时,注意性能开销。

7. itertools 模块

常用函数
  • itertools.product():笛卡尔积。
  • itertools.permutations():排列。
  • itertools.combinations():组合。
python 复制代码
import itertools

# 示例:生成两个列表的笛卡尔积
a = [1, 2]
b = ['x', 'y']
print(list(itertools.product(a, b)))  # 输出:[(1, 'x'), (1, 'y'), (2, 'x'), (2, 'y')]
优化建议
  • 避免直接生成超大数据集,尽量使用惰性求值特性。
  • 适合解决组合问题,但需要注意时间复杂度。

8. collections 模块

常用类
  • Counter:统计元素出现次数。
  • defaultdict:带默认值的字典。
  • deque:高效的双端队列。
python 复制代码
from collections import Counter

# 示例:统计列表中元素的频率
words = ["apple", "banana", "apple", "orange"]
word_count = Counter(words)
print(word_count)  # 输出:Counter({'apple': 2, 'banana': 1, 'orange': 1})
优化建议
  • 在需要高效统计或数据结构时使用。
  • 熟悉其内部实现原理,避免过度依赖。
相关推荐
0wioiw033 分钟前
Android-Kotlin基础(Jetpack③-LiveData)
android·开发语言·kotlin
java1234_小锋1 小时前
一周学会Matplotlib3 Python 数据可视化-坐标轴 (Axis)
开发语言·python·信息可视化·matplotlib·matplotlib3
奶油话梅糖1 小时前
【网络自动化】利用Python脚本与计划任务,实现H3C/HPE设备配置无人值守备份
网络·python·自动化
无影无踪的青蛙2 小时前
macOS用户崩溃瞬间:当我发现电脑里有8个Python版本…
python
小苏兮2 小时前
飞算JavaAI深度解析:专为Java生态而生的智能引擎
java·开发语言·人工智能·java开发·飞算javaai炫技赛
十里桃花ღ2 小时前
Python 图像处理库Pillow
python
OAK中国_官方2 小时前
使用OAK相机实现智能物料检测与ABB机械臂抓取
人工智能·python·边缘计算·深度相机
Bdygsl2 小时前
前端开发:JavaScript(6)—— 对象
开发语言·javascript·ecmascript
amazinging2 小时前
北京-4年功能测试2年空窗-报培训班学测开-第七十一天-面试第二天
python·学习·面试
babytiger3 小时前
我的c#用到Newtonsoft.Json.dll,Fleck.dll这两个dll能否打到一个exe 中,而不是一起随着exe拷贝
开发语言·c#·json