python使用for循环,python for 循环语句

  python使用for循环,python for 循环语句

  For循环

  在本系列的上一篇文章“Python搜索,第5部分:Python编程”中,我们讨论了if语句和while循环,并讨论了如何正确缩进复合语句和Python语句以指示相关的Python代码块。在本文的最后,我将介绍Python for loops。但是,关于它的用途和功能,for循环更值得关注,所以本文单独讨论这个循环。

  for循环有一个简单的语法,它可以从容器对象中提取单个项目并执行特定的操作。简单地说,使用for循环可以重复。集合可以是任何Python容器类型,比如上一篇文章中介绍的tuple、string和list。然而,容器隐喻比这三种类型更强大。隐喻包含其他序列类型,如字典和集合,这将在以后的文章中讨论。

  但是请等一下!要了解更多信息,可以对任何支持迭代隐喻的对象使用For循环。这将使for循环非常有用。

  清单1展示了for循环的基本语法,以及如何在for循环中使用continue和break语句。

  清单1。for循环的伪代码

  对于容器中的项目:

  如果条件A: #跳过此项

  连续不断地

  elifconditionb : # donewithloop

  布莱克

  # actiontorepeatforeachiteminthecontainer

  否则:

  #一旦我们完成了循环.

  本系列的第二篇文章“探索Python,第2部分:探索Python类型的层次结构”介绍了Python tuple。如本文所述,元组类型是不可改变的异构容器。这主要意味着tuple可以存储各种类型的对象,但是一旦创建就不能更改。清单2展示了如何使用for循环来重复tuple的元素。

  清单2。for循环和元组

  t=(0、1、2、3、4、5、6、7、8、9))

  计数=0

  对于t中的num:计数=数量。否则:打印计数。

  45

  计数=0

  对于t中的num:如果数量为% 2:继续。计数=数量。否则:打印计数。

  20

  这个示例首先创建一个名为t的元组,并存储从0到9(包括9)的整数。第一个for循环重复这个元组,在count变量中累加元组值的总和。代码重复tuple中的所有元素后,进入for循环的else子句,打印count变量的值。

  清单2中显示的第二个for循环也重复tuple中的所有元素。但是,只累加容器中可被2整除的项目的值。注意,如果表达式非零,则if语句被确定为真;如果num不能被2整除,使用%运算符将返回一个非零值。)。使用适当的if和continue语句进行这种限制。如前一篇文章所述,continue语句使包含它的循环开始下一次迭代。达到相同结果的另一种方法是测试元组的当前项是否是偶数。使用if not num% 2:如果为true,将当前项目添加到运行总计中。代码元组中的迭代完成后,将调用else子句并打印总数。

  本系列的第三篇文章“Python探索:第3部分:Python类型的分层探索”讨论了Python string。String是一个不可变的同构容器,这意味着只能存储字符,一旦创建就不能修改。清单3展示了如何使用Python string作为for循环的容器。

  清单3。对于循环和字符串

  ST= python iagratprograminglanguage!

  对于st中的c:打印c。

  pythonisagretprogramminglanguage!

  计数=0

  对于st中的c:

  .如果c在‘aeiou’中:

  .计数=1

  .否则:

  .打印计数

  .

  10

  计数=0

  对于st.lower()中的c:

  .如果c在‘aeiou’中:

  .计数=1

  .否则:

  .打印计数

  .

  12

  这个例子提供了三个不同的for循环,它们都迭代相同的字符串。第一个for循环迭代字符串“python是一种很棒的编程语言!”并且一次打印字符串中的一个字符。在本例中,在print语句的变量C之后添加了一个逗号。这会导致print语句打印后跟空格字符而不是换行符的字符值。如果后面没有逗号,字符将全部打印在单独的一行上,这将很难阅读。

  接下来的两个for循环遍历字符串,并计算它包含多少个元音(“A”、“E”、“I”、“O”或“U”)。第二个for循环在迭代原始字符串时只查找小写元音。第三个for循环迭代通过调用string对象的lower方法返回的临时字符串。lower方法将字符串中的所有字符转换为小写。因此,第三个for循环可以找到另外两个元音。

  本系列的第四篇文章“探索Python,第4部分:探索Python类型的层次结构”介绍了Python list。List是一个异构的可变容器,这意味着它可以容纳不同类型的对象,并且在创建后可以修改。清单4演示了如何使用list和for循环。

  清单4。for循环和列表

  mylist=[1,1.0,1.0j, 1 ,(1,[1]]

  对于我的列表中的项目:

  .打印项目, \t ,类型(项目))

  .

  1 1.0 1j 1 (1,)[1]

  由于list是一种灵活的Python容器类型(您将在本系列的其余部分中多次看到),这个例子可能看起来太简单了。然而,这是要点的一部分:使用for循环使得处理容器中的每个项目变得非常简单,甚至是包含各种不同对象的列表。此示例遍历Python列表中的所有项目,并在单独的行中打印每个项目及其对应的Python类型。

  和可变容器。

  Python list是一个变量序列,这提供了一种奇怪的可能性:for循环体可以修改它正在迭代的列表。正如你可能认为的,这并不好。如果这样做,Python解释器将不能很好地工作,如清单5所示。

  清单5。在for循环中修改容器

  mylist=[0,1,2,3,4,5,6,7,8,9]

  对于我的列表中的项目:

  .如果项目% 2:

  .mylist.insert(0,100)

  .

  ^CTraceback(最近通话记录):

  文件,第3行,在?

  键盘中断

  打印我的列表

  [100,100,100,0,1,2,3,4,5,6,7,8,9] #为清晰起见,删除了许多行

  mylist=[0,1,2,3,4,5,6,7,8,9]

  对于我的列表中的项目[:]:

  .如果项目% 2:

  .mylist.insert(0,100)

  .

  打印我的列表

  [100, 100, 100, 100, 100, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  本例中的第一个for循环每当在原始列表中找到一个奇数时,就在原始列表的开头插入一个值100。当然,这是一种不寻常的论证这个问题的方式,但是很好。一旦在Python提示三点后按下回车键,Python解释器就陷入无限循环混乱。为了停止这种混乱,您必须通过按Ctrl-C(在Python输出中显示为C)来中断该进程,然后会出现一个KeyboardInterrupt异常。如果打印出修改后的列表,您将看到mylist现在包含大量值为100的元素(新元素的确切数量取决于您中断循环的速度)。

  本例中的第二个for循环演示了如何避免这个问题。使用slice运算符创建原始列表的副本。现在,for循环将迭代复制并修改原始列表。的最终结果是修改后的原始列表,它现在以五个值为100的新元素开始。

  对于循环和序列索引

  如果您使用过其他编程语言,Python for loops可能看起来有点奇怪。您可能认为这更像是一个foreach循环。基于c的编程语言有一个for循环,但它被设计成执行一系列操作一定次数。Python循环可以通过使用内置的range和xrange方法来模拟这种行为。清单6展示了这两种方法。

  清单6。range和xrange方法

  r=范围(10)

  打印r

  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  类型(r)

  xr=xrange(10)

  打印xr

  xrange(10)

  类型(xr)

  此示例首先演示range方法,该方法创建一个包含一系列整数的新列表。调用range方法的一般形式是提供单个值,作为整数列表的上限。是零起始值。因此,调用range(10)将创建一个包含整数0到9(包括0和9)的列表。range方法接受起始索引和步长。所以调用range(11,20)会创建11到19(含19)的整数列表,而调用range(12,89,2)会创建12到88的偶数列表。

  xrange方法与range方法非常相似,因为它也创建一个整数列表(使用相同的参数)。但是,xrange方法只在需要时在列表中创建整数。例如,在清单6中,当您试图打印新创建的xrange时,除了xrange的名称之外,不会显示任何数据。当需要迭代大量整数时,xrange方法更适合,因为它不会创建一个庞大的列表,而这个列表会消耗大量的计算机内存。

  清单7演示了如何在for循环中使用range方法来创建1到10(包括1和10)的乘法表。

  清单7 .创建乘法表

  对于范围(1,11)中的行:

  .对于范围(1,11)中的列:

  .打印= %(行*列),

  .打印

  .

  1 2 3 4 5 6 7 8 9 10

  2 4 6 8 10 12 14 16 18 20

  3 6 9 12 15 18 21 24 27 30

  4 8 12 16 20 24 28 32 36 40

  5 10 15 20 25 30 35 40 45 50

  6 12 18 24 30 36 42 48 54 60

  7 14 21 28 35 42 49 56 63 70

  8 16 24 32 40 48 56 64 72 80

  9 18 27 36 45 54 63 72 81 90

  10 20 30 40 50 60 70 80 90 100

  这个例子使用了两个for循环。外部的for循环关注乘法表中的每一行,嵌套的for循环关注每一行中的列。每个循环遍历包含从1到10(包括1和10)的整数的列表。其中最多的print语句使用了一个叫做字符串格式的新概念来创建一个格式优美的表格。字符串格式化是一种非常有用的技术,可以创建由不同数据类型组成的格式美观的字符串。详细的信息现在不重要,以后的文章会涉及到(懂C编程语言printf方法的人都会熟悉这些内容)。在这个例子中,字符串格式指定将从一个整数创建一个新的字符串,并且需要保留三个字符来存储该整数(如果该整数少于三个字符,则左侧将用空格填充,这样数据将被整齐地排列)。第二个print语句用于打印新行,这样乘法表中的下一行就打印在新行中。

  range方法还可以用于遍历容器,通过使用适当的索引来访问序列中的每一项。为此,您需要一个包含容器的允许范围索引值的整数列表,这可以通过使用range方法和len方法轻松实现,如清单8所示。

  清单8。在for循环中索引容器

  st=Python是一门伟大的编程语言!

  对于范围内的索引(len(st)):

  .打印st[index],

  .

  P y t h o n I s A G r e A t P r o G r A m m m I n G L A n G u A G e!

  对于st.split( )中的项目:

  .打印项目,len(项目)

  .

  Python 6

  是2

  A 1

  伟大的5

  编程11

  语言!九

  最后一个示例演示了如何使用len方法作为range方法的参数来创建一个整数列表,该列表可用于独立访问字符串中的每个字符。第二个for循环还展示了如何将一个字符串分割成子字符串列表(使用空格字符来表示子字符串的边界)。为循环迭代子串列表,并打印每个子串及其长度。

  结束语

  本文讨论了Python for循环并演示了它的一些用法。可以对任何提供迭代器的Python对象使用for循环,包括tuple、string和list等内置序列类型。for循环和list序列一起使用时具有强大的功能,您会发现自己在许多情况下都在使用它们。Python为结合这两个概念提供了一个简单的机制,称为列表理解,这将在以后的文章中讨论。

  这篇技术文章来自互联网。如果您无意侵犯您的权益,请点击此处反馈版权投诉。

  系统来源:php中文网

  标签:Python

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: