当前位置:首页 > Python > 正文

Python循环遍历的8种方法详解 - 从基础到高级循环技巧

Python循环遍历的8种方法详解

循环是编程中最重要的概念之一,掌握多种循环遍历方法能极大提高Python编程效率。本教程将详细讲解Python中8种常用的循环遍历方法,每种方法都配有实际代码示例。

1. for循环 - 最常用的遍历方法

for循环是Python中最常用的循环方式,用于遍历任何可迭代对象(列表、元组、字典、字符串等)。

代码示例:

# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# 遍历字符串
word = "Python"
for char in word:
    print(char)

# 遍历字典
person = {"name": "Alice", "age": 30, "city": "New York"}
for key, value in person.items():
    print(f"{key}: {value}")

2. while循环 - 条件循环

while循环在条件为真时重复执行代码块,适合不确定循环次数的场景。

代码示例:

# 基本while循环
count = 0
while count < 5:
    print(f"Count is {count}")
    count += 1

# 使用break退出循环
while True:
    user_input = input("输入 'exit' 退出: ")
    if user_input == 'exit':
        break
    print(f"你输入了: {user_input}")

3. 使用range()函数遍历

range()函数生成数字序列,常用于需要索引的循环遍历。

代码示例:

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

# 指定起始和结束值
for i in range(2, 6):
    print(i)  # 输出2,3,4,5

# 指定步长
for i in range(0, 10, 2):
    print(i)  # 输出0,2,4,6,8

# 倒序遍历
for i in range(5, 0, -1):
    print(i)  # 输出5,4,3,2,1

4. 使用enumerate()获取索引

enumerate()函数可以在遍历时同时获取索引和元素值。

代码示例:

fruits = ["apple", "banana", "cherry"]

# 基本用法
for index, fruit in enumerate(fruits):
    print(f"索引 {index}: {fruit}")

# 指定起始索引
for index, fruit in enumerate(fruits, start=1):
    print(f"{index}. {fruit}")

5. 使用zip()并行遍历

zip()函数用于同时遍历多个可迭代对象。

代码示例:

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["New York", "London", "Paris"]

# 同时遍历两个列表
for name, age in zip(names, ages):
    print(f"{name} is {age} years old")

# 同时遍历三个列表
for name, age, city in zip(names, ages, cities):
    print(f"{name} is {age} years old and lives in {city}")

# 使用enumerate和zip
for i, (name, age) in enumerate(zip(names, ages)):
    print(f"{i}: {name} - {age}")

6. 列表推导式 - 简洁高效

列表推导式提供了一种简洁的方式来创建列表,同时执行循环操作。

代码示例:

# 基本列表推导式
squares = [x**2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 带条件的列表推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]

# 字典推导式
word = "hello"
char_count = {char: word.count(char) for char in set(word)}
print(char_count)  # {'h': 1, 'e': 1, 'l': 2, 'o': 1}

# 集合推导式
unique_chars = {char for char in word}
print(unique_chars)  # {'h', 'e', 'l', 'o'}

7. 使用map()函数遍历

map()函数将一个函数应用于可迭代对象的每个元素,返回一个迭代器。

代码示例:

# 使用map转换元素
numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x**2, numbers)
print(list(squared))  # [1, 4, 9, 16, 25]

# 结合lambda函数
names = ["alice", "bob", "charlie"]
capitalized = map(lambda name: name.capitalize(), names)
print(list(capitalized))  # ['Alice', 'Bob', 'Charlie']

# 多个可迭代对象
a = [1, 2, 3]
b = [4, 5, 6]
result = map(lambda x, y: x + y, a, b)
print(list(result))  # [5, 7, 9]

8. 使用filter()函数过滤遍历

filter()函数根据指定函数的返回值过滤可迭代对象中的元素。

代码示例:

# 过滤偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # [2, 4, 6, 8, 10]

# 过滤非空字符串
words = ["hello", "", "world", " ", "python", None]
non_empty = filter(None, words)  # None过滤掉False值
print(list(non_empty))  # ['hello', 'world', 'python']

# 使用自定义函数
def is_positive(num):
    return num > 0

mixed = [-5, 10, 0, -3.2, 8, 4.5]
positives = filter(is_positive, mixed)
print(list(positives))  # [10, 8, 4.5]

总结:Python循环方法选择指南

根据不同的场景选择合适的循环遍历方法:

  • 遍历序列元素:for循环
  • 需要索引:enumerate()range(len())
  • 同时遍历多个序列:zip()
  • 根据条件循环:while循环
  • 创建新列表:列表推导式
  • 数据转换:map()函数
  • 数据过滤:filter()函数

掌握这些循环遍历方法,将大大提高你的Python编程效率和代码可读性。

发表评论