python程序的循环结构(专题)

2024-01-30 13:58:51 浏览数 (1)

前言

python程序的循环结构有两种,分别是遍历循环和无限循环,这次主要讲解内容之一。除此之外还有循环控制保留字和循环的高级用法介绍。 在计算机编程的世界里,循环结构是一种强大的工具,而Python语言中的循环机制更是让程序员事半功倍。无论是处理大规模数据、实现重复任务,还是简化复杂的算法,Python的循环结构都展现了其简洁而灵活的特性。本篇技术博客将深入探讨Python程序中的循环结构,为你揭示其奥秘,助你更好地掌握这一编程利器。

从最基础的for循环到强大的while循环,我们将逐一剖析它们的用法、优势和适用场景。通过深入了解循环结构,你将能够提高代码的效率、简化逻辑、甚至解决一些看似复杂的编程难题。不管你是初学者还是经验丰富的开发者,本文都将为你提供有价值的见解,让你在Python的循环之旅中畅行无阻。

准备好迎接循环结构的魔力了吗?让我们一起探索Python中循环的无穷可能性吧!

一、遍历循环。

遍历某个结构形成的循环运行方式 for循环用于遍历序列(如列表、元组、字符串等)中的每个元素,并执行特定的代码块。

代码语言:javascript复制
for <循环变量> in <遍历结构> :
<语句块>
  • 由保留字for和in组成,完整遍历所有元素后结束
  • 每次循环,所获得元素放入循环变量,并执行一次语句块

遍历循环的应用

(1)计数循环(N次)

代码语言:javascript复制
for i in range(N) :
<语句块>
  • 遍历由range()函数产生的数字序列,产生循环
代码语言:javascript复制
>>> for i in range(5):
print(i)
0
1
2
3
4
代码语言:javascript复制
>>> for i in range(5):
print("Hello:"
,i)
Hello: 0
Hello: 1
Hello: 2
Hello: 3
Hello: 4

(2)计数循环(特定次)

遍历由range()函数产生的数字序列,产生循环 for i in range(M,N,K) : <语句块> 应用:

代码语言:javascript复制
>>> for i in range(1,6):
print(i)
1
2
3
4
5
代码语言:javascript复制
>>> for i in range(1,6,2):
print("Hello:"
,i)
Hello: 1
Hello: 3
Hello: 5

(3)字符串遍历循环

s是字符串,遍历字符串每个字符,产生循环 for c in s : <语句块> 应用:

代码语言:javascript复制
>>> for c in "Python123":
print(c, end="
,
")
P,y,t,h,o,n,1,2,3,

(4)列表遍历循环

ls是一个列表,遍历其每个元素,产生循环 for item in ls : <语句块> 应用:

代码语言:javascript复制
>>> for item in [123, 
"PY", 456] :
print(item, end="
,
")
123,PY,456,

(5)文件遍历循环

fi是一个文件标识符,遍历其每行,产生循环 for line in fi : <语句块> 应用: fi=优美胜于丑陋 明了胜于隐晦 简洁胜于复杂

代码语言:javascript复制
>>> for line in fi :
print(line)
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂

使用for循环计算列表中元素的和

代码语言:javascript复制
numbers = [1, 2, 3, 4, 5]
sum = 0
for num in numbers:
    sum  = num
print("Sum:", sum)

2.无限循环

while循环用于在满足条件的情况下重复执行代码块。它会在每次循环迭代之前检查条件表达式是否为真,只要条件为真,循环就会继续执行。是由条件控制的循环运行方式。

  • 反复执行语句块,直到条件不满足时结束 while <条件> : <语句块>

–无限循环的应用 无限循环的条件-

代码语言:javascript复制
>>> a = 3
>>> while a > 0 :
a = a - 1
print(a)
2
1
0
代码语言:javascript复制
>>> a = 3
>>> while a > 0 :
a = a   1
print(a)
4
5
… (CTRL   C 退出执行)

示例:使用while循环计算1到5的阶乘:

代码语言:javascript复制
number = 5
factorial = 1
while number > 1:
    factorial *= number
    number -= 1
print("Factorial of 5 is:", factorial)

3,循环控制保留字。

break 和 continue

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环
  • break和continue可以与for和while循环搭配使用 break
代码语言:javascript复制
>>> for c in "PYTHON" :
if c == "T" :
continue
print(c, end="")
PYHON

continue

代码语言:javascript复制
>>> for c in "PYTHON" :
if c == "T" :
break
print(c, end="")
PY

循环控制保留字

代码语言:javascript复制
>>> s = "PYTHON" 
>>> while s != "" :
for c in s :
print(c, end="")
s = s[:-1]
PYTHONPYTHOPYTHPYTPYP
代码语言:javascript复制
>>> s = "PYTHON" 
>>> while s != "" :
for c in s :
if c == "T" :
break
print(c, end="")
s = s[:-1]
PYPYPYPYPYP
  • break仅跳出当前最内层循环

4,循环的高级用法

循环的扩展 循环与else

1,for <变量> in <遍历结构> : <语句块1> else : <语句块2> ,2,while <条件> : <语句块1> else : <语句块2>

  • 当循环没有被break语句退出时,执行else语句块
  • else语句块作为"正常"完成循环的奖励
  • 这里else的用法与异常处理中else用法相似
代码语言:javascript复制
>>> for c in "PYTHON" :
if c == "T" :
continue
print(c, end="")
else:
print("正常退出")
PYHON正常退出
代码语言:javascript复制
>>> for c in "PYTHON" :
if c == "T" :
break
print(c, end="")
else:
print("正常退出")
PY

enumerate函数的运用:

在Python中,enumerate函数是一项强大而灵活的工具,特别适用于循环结构。通过使用enumerate,我们能够同时获得循环中元素的值和它们的索引,从而使代码更具可读性和表达力。

为什么使用enumerate? 很多时候,在循环中需要知道当前处理的元素在序列中的位置。传统的方式是使用索引变量,但enumerate提供了更为简洁和Pythonic的解决方案。

如何使用enumerate?

代码语言:javascript复制
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
    print(f"Index: {index}, Fruit: {fruit}")

这段代码中,enumerate函数同时返回索引和元素值,使得在循环中直接访问它们变得非常容易。

实际应用场景:

在迭代列表时,获取元素的同时还能知道它们在列表中的位置。 在处理字典时,获取键值对的同时知道其在字典中的位置。 在需要在循环中更新列表元素时,避免因修改索引而引发错误。

优势与建议:

提高代码的可读性:通过同时获取索引和元素值,代码更加清晰易懂。 避免手动管理索引变量:不再需要手动维护一个计数器,减少出错的可能性。 注意:在使用enumerate时,要确保循环的顺序和列表中元素的实际顺序一致。 通过灵活运用enumerate函数,你能够在循环中更加便捷地处理数据,使你的代码更加简洁而富有表达力。

迭代器与生成器的概念

在Python中,迭代器(Iterators)和生成器(Generators)是处理大规模数据集或无限序列时的重要工具。它们不仅提供了高效的性能,还能有效地减少内存消耗。让我们深入了解它们是如何与循环结构相结合的。

什么是迭代器和生成器?

迭代器: 是一个可以逐个访问元素的对象,而不需要提前将整个序列加载到内存。在Python中,迭代器可以通过实现__iter__和__next__方法的类来创建。 生成器: 是一种特殊类型的迭代器,它使用yield语句来产生值。生成器函数可以暂停执行并在需要时恢复,有效地节省了内存。

如何使用迭代器和生成器?

迭代器

代码语言:javascript复制
class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index < len(self.data):
            result = self.data[self.index]
            self.index  = 1
            return result
        else:
            raise StopIteration

my_iterator = MyIterator([1, 2, 3])
for item in my_iterator:
    print(item)

生成器

代码语言:javascript复制
def my_generator(data):
    for item in data:
        yield item

my_gen = my_generator([1, 2, 3])
for item in my_gen:
    print(item)

实际应用场景:

处理大数据集: 在不一次性加载整个数据集到内存的情况下,逐个处理元素。 生成无限序列: 通过生成器创建无限序列,如斐波那契数列。 减少内存开销: 由于只在需要时生成值,生成器能够有效减少内存消耗。 优势与建议:

高效性能: 适用于处理大规模数据集,减少对内存的要求。 代码简洁: 通过生成器,可以用更少的代码实现相同的功能。 注意事项: 在处理迭代器和生成器时,要注意异常的处理,确保循环能够正确终止。 通过理解和运用迭代器与生成器,你可以在循环结构中更加高效地处理大规模数据,提高程序的性能和可维护性。

总结

以上是Python中两种主要的循环结构。您可以根据具体需求选择适合的循环来实现所需的迭代和重复操作。记得在循环中正确处理循环变量的值,以避免出现意外结果或死循环。

程序的循环结构重点掌握遍历循环,理解循环保留字,学习循环else的高级用法。

  • for…in 遍历循环: 计数、字符串、列表、文件…
  • while无限循环
  • continue和break保留字: 退出当前循环层次
  • 循环else的高级用法: 与break有关

通过本文的介绍,我们深入研究了Python程序中循环结构的方方面面。循环不仅是解决重复性任务的得力工具,更是在编程世界中展现出巧妙设计和灵活运用的核心要素。从简单的迭代到更为复杂的条件判断,循环结构的应用在各种场景下都能发挥出色。

希望在本文的指导下,你对Python中的循环有了更为清晰的认识,并能够在实际项目中灵活运用。无论是加速数据处理、简化算法逻辑,还是提高代码效率,循环结构都将成为你编程路上的得力助手。

在编写代码的旅途中,不断学习和掌握新的技术工具是不可或缺的一部分。感谢你的阅读,希望这篇博客能够激发你对Python循环结构的兴趣,并在你的编程探险中发挥出色。愿你的代码循环得更高、更远!

0 人点赞