Python 遍历语法总结

5 阅读2分钟

🔁 Python 遍历语法总结

Python 提供了多种灵活且强大的遍历(iteration)方式,适用于不同的数据结构,如列表、元组、字典、集合、字符串等。


✅ 基础 for 循环遍历列表

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(fruit)

✅ 使用 enumerate 获取索引和元素

for index, value in enumerate(fruits):
    print(index, value)
# 从索引 1 开始
for index, value in enumerate(fruits, start=1):
    print(index, value)

✅ 遍历字典(dict)

my_dict = {'a': 1, 'b': 2}

# 遍历键
for key in my_dict:
    print(key)

# 遍历键和值
for key, value in my_dict.items():
    print(key, value)

# 遍历值
for value in my_dict.values():
    print(value)

✅ 遍历字符串中的字符

s = "hello"
for char in s:
    print(char)

✅ 遍历集合(set)

my_set = {10, 20, 30}
for val in my_set:
    print(val)

⚠️ 集合是无序的,因此遍历结果顺序可能不同。


✅ 使用 range() 进行数值遍历

# 从 0 到 4
for i in range(5):
    print(i)

# 从 1 到 5
for i in range(1, 6):
    print(i)

# 从 10 到 0,步长 -2
for i in range(10, 0, -2):
    print(i)

✅ 同时遍历多个列表(zip)

names = ['Tom', 'Jerry']
ages = [10, 12]

for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")

⚠️ 注意事项:

  • zip() 会按最短的列表长度截断
  • 不等长列表不会报错,但可能会丢失数据。
a = [1, 2, 3]
b = ['x', 'y']
for i, j in zip(a, b):
    print(i, j)  # 只输出两组

✅ 不想被截断?用 itertools.zip_longest

from itertools import zip_longest
for a, b, c in zip_longest(list1, list2, list3, fillvalue="N/A"):
    print(a, b, c)

✅ 列表推导式遍历(简洁语法)

# 平方
squares = [x**2 for x in range(5)]

# 条件过滤
evens = [x for x in range(10) if x % 2 == 0]

# 嵌套循环
matrix = [[1, 2], [3, 4]]
flat = [num for row in matrix for num in row]

# 条件表达式(三元)
adjusted = [x if x > 0 else 0 for x in [-1, 2, -3]]

✅ 本质:生成新列表(不会修改原列表)

nums = [1, 2, 3]
new = [x * 2 for x in nums]  # ✅ 新列表

如果需要原地修改,用普通 for 循环。


🧠 小结

结构方法
列表for item in list
索引遍历enumerate()
字典for key, value in dict.items()
多列表zip() / zip_longest()
范围遍历range(start, stop, step)
推导式[expr for item in iterable]

Python 的遍历语法强大且易读,掌握这些能大大提高代码的简洁性和表达力。