博客
关于我
Python基础 | 关于“循环”那些事
阅读量:797 次
发布时间:2023-03-07

本文共 3089 字,大约阅读时间需要 10 分钟。

Python循环深入解析

在 Python 中,循环是处理重复性任务的核心工具。循环分为两大类:for 循环和 while 循环。通过掌握这些循环的特点和使用场景,开发者能够高效地完成各种任务。本文将从多个维度详细解析 Python 的循环机制。

for 循环

for 循环是处理可迭代对象的强大工具。常见的可迭代对象包括 listdictset、文件内容、甚至字符串等。range 是一个常用的可迭代对象,它生成有头无尾的序列。以下是 for 循环的典型用法:

for i in set((1, 2, 3)):
print(i)

输出:123

import string
list_num = list(string.digits)
for i in list_num:
if int(i) % 2 == 0:
print(i)

输出:02468

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

输出:012

for i in range(1, 9):
if int(i) % 2 == 0:
print(i)

输出:2468

enumerate 是一个强大的工具,它将遍历器和索引结合起来,适合需要同时处理元素及其位置的场景:

list_val = [1, 2, 3, 5, 8]
for idx, val in enumerate(list_val):
print(idx, val)

输出: 0 1 1 2 2 3 3 5 4 8

zip 用于同时遍历多个列表,并按顺序打包元素:

list_1 = list(string.digits[:3])
list_2 = list(string.ascii_lowercase[:3])
list_3 = list(string.ascii_uppercase[:3])
print(list_1, list_2, list_3)

输出:012 abc ABC

list_merge_1 = list(zip(list_1, list_2, list_3))
print(list_merge_1)

输出:[('0', 'a', 'A'), ('1', 'b', 'B'), ('2', 'c', 'C')]

list_merge_2 = [i + j + k for (i, j, k) in zip(list_1, list_2, list_3)]
print(list_merge_2)

输出:['0aA', '1bB', '2cC']

list_merge_3 = [i + j for i in list('123') for j in list('ABC')]
print(list_merge_3)

输出:['1A', '1B', '1C', '2A', '2B', '2C', '3A', '3B', '3C']

while 循环

while 循环更灵活,适用于处理未知或动态的循环条件。它结合了 forif 的特性,适合需要多次尝试或者在不确定条件时使用:

x = 2
while (x > 1):
print('这个值大于1')
break

输出:这个值大于1

idx = 1
while (idx < 5):
print(idx)
idx += 1

输出:1234

泛循环

循环的另一种实现方式是通过函数来模拟。list comprehensionmapiter 等工具可以帮助开发者实现循环效果:

num_odd = [i for i in range(1, 10) if i % 2 == 1]
print(num_odd)

输出:[1, 3, 5, 7, 9]

list(map(lambda x: x ** 2, range(4)))

输出:[0, 1, 4, 9]

list_words = ['life', 'is', 'short', 'use', 'python']
list(map(lambda x: len(x), list_words))

输出:[4, 2, 5, 3, 6]

iter 和生成器是基于可迭代对象的另一种实现方式,生成器可以在定义时就开始迭代:

vals_iter = iter(list(range(3)))
print(next(vals_iter))

输出:0

class test_iter:
def __init__(self):
self.a = 1
self.b = 1
def __iter__(self):
return self
def __next__(self):
x = self.a
self.a, self.b = self.b, self.a + self.b
return x
fb = test_iter()
for i in range(6):
print(next(fb))

输出:112358

生成器和迭代器的主要区别在于生成器是在定义时就开始迭代,而迭代器是在调用时开始迭代:

def num_even(x):
while (x > 0):
if x % 2 == 0:
yield x
x -= 1
x = num_even(9)
for i in x:
print(i)

输出:8642

循环的跳出和继续

break 用于跳出循环,continue 用于跳过当前循环体。pass 语句用于占位,但在实际应用中较少使用:

for i in range(5):
print(i)
if i == 2:
break
print('不会出现')

输出:012

for i in range(5):
if i == 2:
continue
print('不会出现')
print(i)

输出:0134

i = 1
while (i < 5):
print(i)
break
print('不会出现')

输出:1

i = 1
while (i < 5):
print(i)
i += 1
if i == 2:
continue
print('不会出现')

输出:1234

嵌套循环适用于多层循环结构:

for i in range(3):
for j in list('abc'):
if j == 'b':
break
print(i, j)

输出: 0 a 1 a 2 a

for i in range(3):
for j in list('abc'):
if i == 1 or j == 'b':
continue
print(i, j)

输出: 0 a 0 c 2 a 2 c

通过以上内容,可以清楚地看到 Python 在不同场景下的循环应用。理解这些循环的特点和使用场景,能够帮助开发者更高效地完成编程任务。

转载地址:http://qlofk.baihongyu.com/

你可能感兴趣的文章
python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
查看>>
Python 使用哈希函数用于加密
查看>>
Python 依赖管理的革新——Poetry 深度解析
查看>>
python 保留精度及增加去除数字的千位分隔符(金额化数字)
查看>>
python 倒计时 9,8,7,。。。。。。0
查看>>
Python 入门开发学习笔记之数据的增删改查
查看>>
Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
查看>>
Python 八大排序算法合集
查看>>
python 关于epoll的学习
查看>>
Python 内存管理
查看>>
Python 内嵌函数:它们有什么用处?
查看>>
Python 内置 sum 函数 vs. for 循环性能
查看>>
python 内置slice的用法
查看>>
Python 内置时间模块
查看>>
python 内部如何实现命名元组?
查看>>
Python 写Android App性能:入门到高级
查看>>
python 写入json数据到数据库
查看>>
Python 出现 TypeError: ‘encoding‘ is an invalid keyword argument for this function 解决方法
查看>>
python 出现 TypeError: ‘list‘ object is not callable 的解决方法
查看>>
python 函数1
查看>>