循环语句 #

一、for循环 #

1.1 基本语法 #

mojo
def main():
    for i in range(5):
        print(i)

main()

1.2 遍历列表 #

mojo
def main():
    let fruits = ["apple", "banana", "orange"]
    
    for fruit in fruits:
        print(fruit)

main()

1.3 遍历字典 #

mojo
def main():
    let scores = {"Alice": 95, "Bob": 87, "Charlie": 92}
    
    for name, score in scores.items():
        print(f"{name}: {score}")

main()

1.4 遍历字符串 #

mojo
def main():
    let text = "Mojo"
    
    for char in text:
        print(char)

main()

1.5 带索引遍历 #

mojo
def main():
    let fruits = ["apple", "banana", "orange"]
    
    for index, fruit in enumerate(fruits):
        print(f"{index}: {fruit}")

main()

1.6 并行遍历 #

mojo
def main():
    let names = ["Alice", "Bob", "Charlie"]
    let ages = [25, 30, 35]
    
    for name, age in zip(names, ages):
        print(f"{name} is {age}")

main()

二、while循环 #

2.1 基本语法 #

mojo
def main():
    var count = 0
    
    while count < 5:
        print(count)
        count += 1

main()

2.2 条件循环 #

mojo
def main():
    var total = 0
    var num = 1
    
    while total < 100:
        total += num
        num += 1
    
    print(f"Total: {total}")

main()

2.3 无限循环 #

mojo
def main():
    while True:
        let input = get_input()
        if input == "quit":
            break
        process(input)

main()

2.4 带else的while #

mojo
def main():
    var count = 0
    
    while count < 5:
        print(count)
        count += 1
    else:
        print("循环结束")

main()

三、循环控制 #

3.1 break语句 #

mojo
def main():
    for i in range(10):
        if i == 5:
            break
        print(i)
    
    print("循环结束")

main()

3.2 continue语句 #

mojo
def main():
    for i in range(10):
        if i % 2 == 0:
            continue
        print(i)

main()

3.3 pass语句 #

mojo
def main():
    for i in range(5):
        pass
    
    print("循环完成")

main()

3.4 嵌套循环控制 #

mojo
def main():
    for i in range(3):
        for j in range(3):
            if i == 1 and j == 1:
                break
            print(f"({i}, {j})")

main()

四、range函数 #

4.1 基本用法 #

mojo
def main():
    for i in range(5):
        print(i)

main()

4.2 指定范围 #

mojo
def main():
    for i in range(2, 8):
        print(i)

main()

4.3 指定步长 #

mojo
def main():
    for i in range(0, 10, 2):
        print(i)

main()

4.4 反向范围 #

mojo
def main():
    for i in range(10, 0, -1):
        print(i)

main()

五、列表推导式 #

5.1 基本语法 #

mojo
def main():
    let squares = [x * x for x in range(5)]
    print(squares)

main()

5.2 带条件 #

mojo
def main():
    let evens = [x for x in range(20) if x % 2 == 0]
    print(evens)

main()

5.3 嵌套推导 #

mojo
def main():
    let matrix = [[i * j for j in range(3)] for i in range(3)]
    print(matrix)

main()

5.4 字典推导式 #

mojo
def main():
    let squares = {x: x * x for x in range(5)}
    print(squares)

main()

六、循环最佳实践 #

6.1 避免修改迭代对象 #

mojo
def main():
    var numbers = [1, 2, 3, 4, 5]
    var to_remove = []
    
    for num in numbers:
        if num % 2 == 0:
            to_remove.append(num)
    
    for num in to_remove:
        numbers.remove(num)
    
    print(numbers)

main()

6.2 使用enumerate #

mojo
def main():
    let items = ["a", "b", "c"]
    
    for i, item in enumerate(items):
        print(f"Index {i}: {item}")

main()

6.3 提前计算长度 #

mojo
def main():
    let items = [1, 2, 3, 4, 5]
    let n = len(items)
    
    for i in range(n):
        print(items[i])

main()

6.4 使用生成器 #

mojo
def fibonacci(n: Int):
    var a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

def main():
    for num in fibonacci(10):
        print(num)

main()

七、性能优化 #

7.1 减少循环内计算 #

mojo
def main():
    let data = [1, 2, 3, 4, 5]
    let multiplier = 10
    
    for num in data:
        print(num * multiplier)

main()

7.2 向量化操作 #

mojo
from SIMD import SIMD

def main():
    let data = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0)
    let result = data * 2.0
    print(result)

main()

7.3 并行处理 #

mojo
def main():
    let data = [1, 2, 3, 4, 5, 6, 7, 8]
    
    for i in range(0, len(data), 2):
        let a = data[i]
        let b = data[i + 1]
        print(a + b)

main()

八、常见模式 #

8.1 计数模式 #

mojo
def main():
    var count = 0
    
    for item in [1, 2, 3, 4, 5]:
        if item > 2:
            count += 1
    
    print(f"Count: {count}")

main()

8.2 累加模式 #

mojo
def main():
    var total = 0
    
    for num in [1, 2, 3, 4, 5]:
        total += num
    
    print(f"Total: {total}")

main()

8.3 查找模式 #

mojo
def main():
    let data = [1, 2, 3, 4, 5]
    var found = -1
    
    for i, num in enumerate(data):
        if num == 3:
            found = i
            break
    
    print(f"Found at: {found}")

main()

8.4 过滤模式 #

mojo
def main():
    let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    let filtered = [x for x in data if x % 2 == 0]
    print(filtered)

main()

九、总结 #

本章学习了:

  • for循环遍历
  • while条件循环
  • break和continue控制
  • range函数
  • 列表推导式
  • 循环最佳实践
  • 性能优化

下一章,我们将学习函数基础。

最后更新:2026-03-27