151
社区成员
发帖
与我相关
我的任务
分享日常编码高频必用:zip、enumerate、all、any 四大内置高阶函数。
都是 Python 原生自带,不用导入任何模块,简洁实用、面试常考、写代码必备。
遍历序列时,同时拿到下标和元素,不用自己定义计数器。
enumerate(可迭代对象, 起始下标)
lst = ["Python", "Java", "C++", "Go"]
# 默认从0开始
for idx, item in enumerate(lst):
print(idx, item)
# 指定起始下标从1开始
for idx, item in enumerate(lst, start=1):
print("序号", idx, "语言:", item)
适用场景:排行榜、序号列表、需要记录位置的遍历。
把多个序列按位置一一配对打包,短的序列结束就停止。
a = [1, 2, 3]
b = ["张三", "李四", "王五"]
# 打包配对
res = zip(a, b)
print(list(res))
num = [101, 102, 103]
name = ["语文", "数学", "英语"]
for n, m in zip(num, name):
print(f"编号{n} 科目:{m}")
把打包好的数据还原拆分:
data = [(1,"A"), (2,"B"), (3,"C")]
nums, chars = zip(*data)
print(nums)
print(chars)
适用场景:两个列表关联一一对应、表格数据合并、字典快速构建。
判断可迭代对象所有元素都为真才返回 True,有一个假就返回 False。
# 全部非空、非0、不为False
print(all([1,2,3,4]))
print(all([1,0,3]))
# 结合条件判断
nums = [2,4,6,8]
res = all(x % 2 == 0 for x in nums)
print("是否全是偶数:", res)
适用场景:批量校验、全部达标才通过、权限全满足判断。
可迭代对象只要有一个为真,就返回 True;全假才返回 False。
print(any([0, "", False]))
print(any([0, 1, False]))
# 是否存在奇数
nums = [2,4,6,7]
res = any(x % 2 == 1 for x in nums)
print("是否包含奇数:", res)
适用场景:批量筛查、只要有一个符合条件就触发逻辑。
scores = [85, 92, 78, 60]
names = ["张三","李四","王五","赵六"]
# 1. 序号+姓名+成绩遍历
for idx, name in enumerate(names, 1):
print(f"{idx}. {name}")
# 2. 姓名成绩配对
for name, score in zip(names, scores):
print(f"{name}:{score}分")
# 3. 是否全部及格
all_pass = all(s >= 60 for s in scores)
print("是否全员及格:", all_pass)
# 4. 是否有满分
has_full = any(s >= 100 for s in scores)
print("是否有满分:", has_full)
本篇全新学习了四个 Python 高频内置函数:
这四个函数写法简洁、运行高效,在数据处理、列表遍历、条件批量判断中经常用到,也是面试、考试、日常开发的常考点,熟练掌握可以大幅精简代码、提升编程规范度。