⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Python enumerate 与 zip

学习遍历索引和并行迭代 · 难度:入门 · +10XP

Python enumerate 与 zip

enumeratezip 是 Python 中两个非常实用的内置函数,它们能让你在循环遍历时写出更简洁、更 Pythonic 的代码。enumerate 在遍历时为每个元素添加序号,zip 则将多个可迭代对象打包在一起同时遍历。

enumerate 基本用法

fruits = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']

# 传统方式 (不推荐) i = 0 for fruit in fruits: print(f'{i}: {fruit}') i += 1

# enumerate 方式 (推荐) for i, fruit in enumerate(fruits): print(f'{i}: {fruit}')

# 指定起始索引 for i, fruit in enumerate(fruits, start=1): print(f'第{i}个: {fruit}') # 输出: 第1个: 苹果, 第2个: 香蕉, ...

enumerate 的实际应用

# 查找元素的下标
def find_index(lst, target):
    for i, item in enumerate(lst):
        if item == target:
            return i
    return -1

# 同时处理序号和值 data = [95, 87, 92, 78, 88] for rank, score in enumerate(data, start=1): status = '优秀' if score >= 90 else '良好' if score >= 80 else '及格' print(f'第{rank}名: {score}分 - {status}')

# 使用列表推导与 enumerate names = ['Alice', 'Bob', 'Charlie'] name_dict = {i: name for i, name in enumerate(names, 1)} print(name_dict) # {1: 'Alice', 2: 'Bob', 3: 'Charlie'}

zip 基本用法

names = ['Alice', 'Bob', 'Charlie']
scores = [95, 87, 92]

# 同时遍历多个列表 for name, score in zip(names, scores): print(f'{name}: {score}分')

# 创建字典 score_dict = dict(zip(names, scores)) print(score_dict) # {'Alice': 95, 'Bob': 87, 'Charlie': 92}

# zip 长度不同时,按最短的截断 numbers = [1, 2, 3, 4, 5] letters = ['a', 'b', 'c'] print(list(zip(numbers, letters))) # [(1,'a'), (2,'b'), (3,'c')]

# zip_longest 按最长的补齐 from itertools import zip_longest print(list(zip_longest(numbers, letters, fillvalue=None))) # [(1,'a'), (2,'b'), (3,'c'), (4,None), (5,None)]

组合使用 enumerate + zip

names = ['Alice', 'Bob', 'Charlie']
scores = [95, 87, 92]
grades = ['A', 'B', 'A']

# enumerate 和 zip 组合使用 for i, (name, score, grade) in enumerate(zip(names, scores, grades), start=1): print(f'{i}. {name} - {score}分 - 等级{grade}')

# 输出: # 1. Alice - 95分 - 等级A # 2. Bob - 87分 - 等级B # 3. Charlie - 92分 - 等级A

enumerate 与 zip 对比速查

函数作用典型用法
enumerate(seq)为序列添加索引for i, val in enumerate(seq)
enumerate(seq, start=n)指定起始索引for i, val in enumerate(seq, 1)
zip(a, b)打包多个序列for x, y in zip(a, b)
zip(*matrix)解包矩阵(转置)对行列进行互换
zip_longest(a, b)最长对齐打包from itertools import zip_longest
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 152 篇
0 完成
🔥 0