【Python学习笔记】循环和迭代

  • for和while基本语法
  • break和continue
  • else的使用
  • enumerate和zip在循环中的应用

for和while基本语法



  Python中的的循环使用for和while语句来实现,基本语法结构如下:

#while语法while expression:
    statements
#for语法
for item in s:
    statements

  while无限循环执行循环体中的语句,直到相关表达式求值为False。for语句迭代s中的所有元素,直到没有可迭代的元素为止。所有可迭代的对象都可以使用for语句,所有实现了__iter__和__next__方法的对象都是可迭代对象。

简单例子如下:

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

i = 0
while 1:
    if i < 10:
        print(i)
    else:
        break

break和continue



    使用break可以跳出循环,而continue可以跳到循环的下一个迭代,如下例子:

  读取一个文件,遇到空行,停止读取。

for line in open("test.txt"):
    stripped = line.strip()
    if not stripped:
        break    #遇到空行,停止读取,整个循环终止

  

      读取一个文件,遇到空行则忽略处理。

for line in open("test.txt"):
    stripped = line.strip()
    if not stripped:
        continue     #遇到空行,跳过处理,进行处理下一行

  

  break和continue语句仅应用于正在执行的最内层循环,如果要跳出多层循环嵌套结构,则需要使用多个break和continue或者使用异常。如下例所示:

#读取一个文件,处理非空白行,如果非空白行中有一个空白符,则结束整个处理
for line in open("test.txt"):
    stripped = line.strip()
    if not stripped:
        continue
    for c in stripped:
        if c is ‘‘:
            break

#使用异常跳出整个循环
for line in open("test.txt"):
    stripped = line.strip()
    if not stripped:
        break
    for c in stripped:
        if c is ‘‘:
            raise RuntimeError("c is empty"")

else语句 



 

while和for语句后还可以加入else语句,语法如下:

while expression:
    statements
else:
    statements

for item in s:
    statements
else:
    statements

else在两种情况下会被执行:

  1.循环根本不执行,则会立刻执行else语句

  2. 循环执行完毕,则会执行else语句.

  注意如果在循环中使用break跳出循环,则不会执行else语句。else的主要有循环技术后进行进行检查,后者进行一些后续处理,例如可以关闭文件。如下面的例子,我们从一个文件中循环非空白行,文件读取结束后关闭文件,类似于with的用法。  

f = open("test.txt")
for line in f.readlines():
    stripped = line.strip()
    if not stripped:
        continue
else:
    print("close file")
    f.close()

  enumerate和zip在循环中的使用



  使用for in in s 这种方式的循环我们只能循环获取到s中的元素,如果我们想获取到索引,可以如下这样子使用:

for i in range(len(s)):
    value = s[i]

      也可以使用enumerate()函数来简化,enumerate(s)创建一个迭代器,返回值是一个元组的序列(0,s[0]),(1,s[1]),...(n,s[n])。  

for i, v in enumerate(s):
    pass

  循环中常见的另外一种形式是同时迭代两个以上的序列,例如有两个长度一样的序列s和t,要对其对应的每一项分别处理,代码如下:  

s = [1,2,3,4,5]
t = [10,11,12,14,15]
while i < len(s) and i < len(t):
    x = s[i]
    y = t[i]
    if x < y:
        print("x < y")
    else:
        print("x >= y")
    i += 1

  可以使用zip()内置函数来简化这段代码,如下:

for x,y in zip(s,t):
    if x < y:
        print("x < y")
    else:
        print("x >= y")

  zip(s1,s2...sn)将序列s1,s2...sn序列组合成一个元组(s1[0],s2[0]...sn[0]),...(s1[n],s2[n]...sn[n]), 如果s1,s2...sn的长度不等,则取其中最短的长度。

时间: 2024-10-17 21:39:54

【Python学习笔记】循环和迭代的相关文章

python学习笔记——循环里的else

与之前接触过的语言不同,python有针对循环的else,表示如果循环结束都没有执行里面的break语句就进入到这个else,所以这个else在格式上是与for对齐的. 例: import math for i in range(85, 99): root = math.sqrt(i) if root == int(root): break else: print 'no int root' 版权声明:本文为博主原创文章,未经博主允许不得转载.

Python学习笔记(Ⅱ)——循环/选择/函数

一.循环结构 python中提供了for循环和while循环两种操作,没有do--while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i++)不同,python中的for循环更加类似于foreach结构: ##举例:遍历输出一个单词的所有字母for letter in 'Python': print('当前字母 :'+letter) 对比: string str = "Python"; foreach(char c in s

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

python学习笔记2:字符串

python学习笔记2:字符串 总结:字符串是不可变变量,不能通过下标修改其值 字符串的方法都不会改变字符串原来的值,而是新生成一个字符串 一.3种写法--单引号,双引号,三引号 二.下标和切片 下标:字符串里每个字符所在的位置,也叫索引.strname[n] ,表示strname这个字符串的下标为n对应的字符的值. 切片:取字符串一个下标区间的值. strname[n:m],表示strname这个字符串,下标n到m这个区间内的值,注意n:m取值,顾前不顾后. 三.字符串遍历 in 和not i

python 学习笔记 7 -- Python关键字总结

0.写在前面的话 学习一门语言最重要的功课是练习与复习,在<笨方法学Python>中第三十七节虽然没有教你任何内容,但是它提醒我们:"学了这么多,你还能记得多少?该复习了!" 下面我们就对这一节的第一部分"关键字"来做个复习: Python中的关键字包括如下: and       del        from      not      while    as        elif       global    or       with     

【Python学习笔记之二】浅谈Python的yield用法

在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor). 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前

python &nbsp; 学习笔记 (核心)

python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[0],x[-1]指最后一个字符,x[2:4]取子串, '''hello''' #hello三引号会保留文本输入时的换行符制表符等不需要转义,用于多行原样输入保存 'hello'+'world' #字符串拼接,'hello'*2 #字符串重复 help(fun) #帮助,help(module.met

python学习笔记(五)之字典2

python学习笔记(五)之字典2编程实战中经常用到实例1:copy >> ad = {"name":"wtf","hig":"180"}>> bd = ad>> bd{'name': 'wtf', 'hig': '180'}>> id (ad)4539954352>> id (bd)4539954352说明:一个对象贴上两个标签,使用赋值,实现了所谓的"假

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho