文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用 Python 的 for 循环

2024-12-03 01:38

关注

【51CTO.com快译】在Python中创建循环时,通常有两个选择:while循环和for循环。while很简单:它只是重复,直到给定的条件不再成立。for循环比较复杂,因而功能更强大:for循环语句集合中遍历,而不必知道集合的详细信息。

Python for 循环组件

Python for循环有两个组件:
    • 包含或产生要循环的元素的容器、序列或生成器。一般来说,任何支持 Python迭代器协议的对象都可以在for循环中使用。
    • 保存容器/序列/生成器中每个元素的变量。
在下面的例子中,我们循环遍历一个数字列表,并使用变量digit依次保存每个数字:

  1. for digit in [3,1,4,1,5,9]: 
  2.     print (digit) 

这将打印:

  1. 3 1 4 1 5 9 

如果要遍历生成容器或序列的对象,可以使用 Python 的多重赋值语法将其解包。例如:

  1. for letter, number in [["a",1],["b",2]]: 
  2.     print (letter, number)  

输出:

  1. 1  
  2. 2 

常见的 Python for 循环

以下是 Python for 循环中使用的一些常见对象:

列表

上面的例子展示了如何使用for循环迭代列表。请注意,如果您有一个列表,则for循环提取的每个元素本身就是一个列表。for循环不会自动“展平”任何类型的嵌套结构。

字符串

Python 中的字符串被认为是“序列”——它们可以被迭代,迭代字符串的结果是字符串中的每个字符。

  1. for letter in "Hello world"
  2.     print (letter)    

这将产生:

  1.  

字典

使用for循环遍历字典会生成字典中的每个键。

  1. d1 = { 
  2.     "a"1
  3.     "b"2 
  4. for key in d1: 
  5.     print (key)  

这将产生:

如果要遍历字典的值,请使用字典的.values()方法。还可以使用.items()一起遍历键和值:

  1. d1 = { 
  2.     "a"1
  3.     "b"2 
  4. for key, value in d1.items(): 
  5.     print (key, value) 

这将产生:

  1. 1  
  2. 2 

生成器

生成器生成一系列的项,每次调用一个项。for循环中使用的生成器的一个常见示例是range。

  1. for n in range(50): 
  2.     print (n)    

这将打印数字 0 到 49。

请注意,仅仅因为可以在for循环中使用生成器,并不意味着生成器最终会自行停止。例如,这个for循环将永远运行:

  1. def forever(): 
  2.     while True
  3.         yield 1 
  4. for n in forever(): 
  5.     print (n)    

在这种情况下,需要采取措施确保循环可以终止。(参见下面的“流量控制”。)

在Python for循环中使用索引和枚举

从 C、C++ 或 Java 等语言来到 Python 的开发人员通常会创建一个索引变量,用于逐步遍历正在迭代的对象。举个例子:

  1. x =[ 3 , 1 , 4 , 1 , 5 , 9 ]  
  2. n = 0而n < len ( x ): print ( x [ n ])  
  3.     n += 1  

这本身并没有错,但它忽略了 Python 的工作原理。Python 中的for循环不需要索引;它可以只遍历要迭代的对象,而无需对其进行索引。

但是,有时需要在循环时跟踪正在处理的元素。Python 的enumerate()实用程序对此有所帮助。它需要一个可迭代对象,并在每次迭代时生成索引和该索引处的对象的元组:

  1. x = [3,1,4,1,5,9
  2. for index, n in enumerate(x): 
  3. print (index, n) 
  1. 0 3 
  2. 1 1 
  3. 2 4  
  4. 3 1 
  5. 4 5 
  6. 5 9 

Python for 循环中的流量控制

for循环并不总是运行到完成,或完全按顺序运行。假如想提前跳出一个for循环,或者跳过循环中的某个项。为此,Python提供了两个关键字:break和continue。

  1. for n in range(20): 
  2.     if n % 2 == 0# if n is a multiple of 2 
  3.         continue   # then skip it 
  4.     # everything after this point is not run 
  5.     # if `continue` is invoked 
  6.     print (n) 
  7. print ("Done")  

这将产生1 3 5 7 9 11 13 15 17 19,然后Done。请注意,当循环结束时,程序在print(“Done”)处正常继续。

  1. for n in range ( 20 ): if n == 10 : break # 完全离开循环print ( n ) print ( "Done" ) 

打印数字0到9,然后Done。

请注意,如果循环嵌套在其他循环中,break则只会影响当前循环——它不会从所有循环级别退出。从多个for循环中退出需要不同的机制,如sentinel变量:

  1. done = False 
  2. for n in range(20): 
  3.     for m in range(40): 
  4.         if n==10 and m==10
  5.             done = True 
  6.         if done: break 
  7.     if done: break     

Python for 循环陷阱

在for循环中迭代对象的元素时,不要做任何会改变成员或序列长度的事情。例如,如果要在一个列表上迭代,则不要在迭代时从列表中添加或删除元素。

如果迭代元素的原因是测试每个元素以查看是否需要添加或删除某些内容,那么有一个更好的解决方案。创建一个新的空容器,仅用要保留的元素填充它,然后用新容器替换旧容器。

下面是一个带有列表的示例。这将创建一个只包含奇数的新列表: 

  1. old_list = [1,2,3,4,5,6
  2. new_list = [] 
  3. for n in old_list: 
  4.     if n % 2
  5.         new_list.append(n) 
  6. old_list = new_list  

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:InfoWorld内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯