12个实用的Python内置函数,让你的代码更简洁高效
Python提供了很多强大的内置函数,能够帮我们节省时间、简化代码并提升程序性能。很多初学者并不知道这些函数的存在,经常自己重复实现Python已经提供的功能。
下面是我在编程过程中发现的12个最有用的Python内置函数,希望早点知道它们就好了。
1. enumerate() - 轻松获取索引和值
遍历列表时,不再需要手动维护计数器变量来获取索引:
cities = ['巴黎', '东京', '开罗', '悉尼']
for 序号, 城市 in enumerate(cities, start=1):
print(序号, 城市)输出结果:
1 巴黎
2 东京
3 开罗
4 悉尼这样就不需要自己定义索引变量了,代码更加清晰。
2. zip() - 同时遍历多个列表
需要同时处理多个列表时,zip()非常有用:
书籍 = ['1984', '沙丘', '哈姆雷特']
作者 = ['乔治·奥威尔', '弗兰克·赫伯特', '威廉·莎士比亚']
for 书, 作者名 in zip(书籍, 作者):
print(f"《{书}》的作者是{作者名}")输出结果:
《1984》的作者是乔治·奥威尔
《沙丘》的作者是弗兰克·赫伯特
《哈姆雷特》的作者是威廉·莎士比亚3. any()和all() - 快速检查条件
any()在可迭代对象中至少有一个True时返回True,all()需要所有元素都为True才返回True:
词语列表 = ["你好", "世界", ""]
print(any(词语列表)) # True(至少有一个非空字符串)
print(all(词语列表)) # False(因为有空字符串)这比写循环来检查条件要简洁得多。
4. sorted() - 灵活排序数据
不需要写复杂的排序逻辑,sorted()可以轻松实现各种排序需求:
商品列表 = [('笔记本电脑', 1200), ('手机', 800), ('平板', 600)]
按价格排序 = sorted(商品列表, key=lambda x: x[1])
print(按价格排序)输出结果:
[('平板', 600), ('手机', 800), ('笔记本电脑', 1200)]key参数让你可以指定按哪个字段排序。
5. map() - 批量处理数据
不需要用for循环来转换每个元素,map()可以一次性处理所有元素:
数字列表 = [1, 2, 3, 4, 5, 6]
偶数加倍 = list(map(lambda x: x * 2 if x % 2 == 0 else x, 数字列表))
print(偶数加倍)输出结果:
[1, 4, 3, 8, 5, 12]如果条件比较复杂,也可以用列表推导式:
数字列表 = [1, 2, 3, 4, 5, 6]
奇数立方 = [x ** 3 for x in 数字列表 if x % 2 != 0]
print(奇数立方) # 输出:[1, 27, 125]6. filter() - 筛选满足条件的元素
filter()可以快速筛选出符合条件的元素:
单词列表 = ["apple", "banana", "orange", "grape", "umbrella"]
元音开头 = list(filter(lambda w: w[0].lower() in "aeiou", 单词列表))
print(元音开头)输出结果:
['apple', 'orange', 'umbrella']7. reduce() - 累积计算
reduce()函数(需要从functools导入)可以进行累积操作,比如找最大值、求和等:
from functools import reduce
编程语言 = ["python", "java", "javascript", "c"]
最长单词 = reduce(lambda a, b: a if len(a) > len(b) else b, 编程语言)
print(最长单词)输出结果:
javascript虽然sum()函数在求和时更直观,但reduce()在自定义累积操作时更强大。
8. setdefault() - 安全的字典操作
不需要先用if检查键是否存在,setdefault()可以自动初始化不存在的键:
库存 = {'苹果': 10}
香蕉数量 = 库存.setdefault('香蕉', 5) # 如果香蕉不存在就添加
print(库存)输出结果:
{'苹果': 10, '香蕉': 5}9. vars() - 查看对象属性
vars()返回对象的__dict__属性,方便查看对象的所有属性:
class 汽车:
def __init__(self, 品牌, 年份):
self.品牌 = 品牌
self.年份 = 年份
我的车 = 汽车('丰田', 2020)
print(vars(我的车))输出结果:
{'品牌': '丰田', '年份': 2020}10. globals()和locals() - 查看变量作用域
想了解当前作用域有哪些变量时,这两个函数很有用:
全局变量 = 5
def 测试函数():
局部变量 = 15
print("函数内的局部变量:", locals())
print("函数内的全局变量:", list(globals().keys())[:5]) # 显示前5个
测试函数()11. isinstance() - 类型检查
与使用type()相比,isinstance()进行类型检查更加灵活:
数据1 = "你好"
数据2 = [1, 2, 3]
print(isinstance(数据1, str)) # True
print(isinstance(数据2, (list, tuple))) # True(数据2是列表)
print(isinstance(数据1, (list, tuple))) # False12. callable() - 判断是否可调用
想知道一个对象能否像函数一样被调用?用callable():
class 倍数器:
def __init__(self, 倍数):
self.倍数 = 倍数
def __call__(self, 数字):
return 数字 * self.倍数
加倍 = 倍数器(2)
print(callable(加倍)) # True,因为有__call__方法
print(callable("字符串")) # False,字符串不可调用当处理动态创建的对象时,这个函数特别有用。
使用建议
开始使用这些内置函数后,你会发现代码变得:
更简洁:用一行代码代替多行循环
更易读:函数名直接表达了代码的意图
更高效:内置函数通常比手写代码运行更快
建议先从enumerate()、zip()、sorted()这几个最常用的函数开始,逐步在其他代码中尝试使用这些内置函数。你会发现Python编程变得更有趣,代码质量也明显提升。
记住,好的程序员不是知道所有答案,而是知道在哪里找到答案。这些内置函数就是Python为你准备好的高效工具。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!