Python循环的技巧和注意事项

在这里插入图片描述

  在Python中,主要使用for循环和while循环进行迭代。为了更有效的使用循环,避免一些常见的陷阱,总结了一些关于使用循环的注意事项。

1. 避免无限循环

  在while循环中,程序会一直执行循环体,直到条件不再满足,然后跳出循环。
  无限循环可能会导致程序无法停止或消耗大量内存。在使用无限循环时,务必设置适当的退出条件或使用其他方法来控制循环的执行次数。

while True:  
    print("This is an infinite loop!")

2. 使用range()函数

  range()函数生成一个数字序列,常用于for循环。这有助于遍历数字范围,执行固定次数的循环。

for i in range(5):
    print(i)

3. 避免在循环中修改迭代对象

  在for循环中避免修改正在迭代的对象,因为这可能导致循环无法正确迭代。这是因为for循环在开始时就获取了迭代对象的引用,如果对象发生改变,可能导致不可预测的结果。
  应该使用新的列表或其他数据结构来保存修改后的值。

# 不推荐的写法
for item in my_list:
    if some_condition:
        my_list.remove(item)

4. break和continue语句

  break语句用于提前退出循环,而continue语句用于跳过循环中的某些代码。这可以用于在满足某些条件时提前终止循环或跳过特定的迭代。

# break示例
for i in range(10):
    if i == 5:
        break  # 退出循环
    print(i)
# continue示例
for num in range(10):  
    if num % 2 == 0:  # 检查是否为偶数  
        continue  # 如果是偶数,则跳过当前迭代,并进入下一次迭代  
    print(num)  # 如果为奇数,则打印该数字

5. 列表推导式

  列表推导式是一种用于简化创建列表的语法,可以在一行代码中生成列表,具有简洁而清晰的语法。

squares = [x**2 for x in range(1, 11)]  
print(squares)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
even_numbers = [num for num in numbers if num % 2 == 0]  
print(even_numbers)  # 输出:[2, 4, 6, 8]
strings = ['apple', 'banana', 'cherry']  
uppercase_strings = [string.upper() for string in strings]  
print(uppercase_strings)  # 输出:['APPLE', 'BANANA', 'CHERRY']

6. 使用else子句

  else子句用于在循环正常结束时执行一些代码,它不会在循环被break语句中断时执行。

# 在循环正常结束时执行代码
for i in range(5):  
    print(i)  
else:  
    print("Loop ended normally")
# 在循环提前结束时执行代码
for i in range(5):  
    if i == 3:  
        break  
    print(i)  
else:  
    print("Loop was interrupted")

7. enumerate()函数

  enumerate()函数用于在循环中同时获取索引和元素值,返回一个包含索引和对应元素的元组。

lst = ['apple', 'banana', 'cherry']  
for i, fruit in enumerate(lst, start=1):  
    print(f"Index: {i}, Fruit: {fruit}")

8. zip()函数

  zip()函数用于将两个或多个可迭代对象的元素一一配对,需要同时迭代多个序列时很有用。

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for item1, item2 in zip(list1, list2):
    print(item1, item2)

9. 性能优化

  在循环中进行昂贵的字符串拼接时,应避免多次修改不可变字符串。每次修改都会创建一个新字符串对象,而使用join()方法则更高效。

# 不推荐的写法
result = ""
for item in my_list:
    result += str(item)
# 推荐使用join()方法
result = ''.join(str(item) for item in my_list)

10. 尽量在循环体内使用局部变量

  在循环中,访问局部变量比访问全局变量更快。因此,如果需要在循环中使用变量,那么应该将它们定义为局部变量。

# 不好的做法,使用全局变量  
x = 0  
for i in range(10):  
    x += 1  # 访问全局变量x,速度较慢  
    print(x)  
  
# 好的做法,使用局部变量  
for i in range(10):  # 在循环中定义局部变量x,速度更快  
    x = i  # 定义局部变量x,速度更快  
    print(x)  # 访问局部变量x,速度更快

11. 避免不必要的计算

  在循环中,反复进行相同的计算会浪费大量时间。如果可以在循环开始前就计算出结果,就不要在循环中反复计算。

# 不好的做法  
for i in range(10):  
    result = complex_calculation(i)  
    print(result)  
  
# 好的做法  
result = complex_calculation(i)  
for i in range(10):  
    print(result)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snail哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值