【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的长度不等,则取其中最短的长度。
【Python学习笔记】循环和迭代的更多相关文章
- Python学习笔记(Ⅱ)——循环/选择/函数
一.循环结构 python中提供了for循环和while循环两种操作,没有do……while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i+ ...
- Python学习笔记-循环语句
While 循环语句 flag=False name = raw_input("请输入:"); numbers=['羊爸爸','羊妈妈','羊宝','牛宝'] while len( ...
- 【python学习笔记】5.条件、循环和其他语句
[python学习笔记]5.条件.循环和其他语句 print: 用来打印表达式,不管是字符串还是其他类型,都输出以字符串输出:可以通过逗号分隔输出多个表达式 import: 导入模块 impo ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...
- 【Python学习笔记之二】浅谈Python的yield用法
在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...
- Python学习笔记(八)
Python学习笔记(八): 复习回顾 递归函数 内置函数 1. 复习回顾 1. 深浅拷贝 2. 集合 应用: 去重 关系操作:交集,并集,差集,对称差集 操作: 定义 s1 = set('alvin ...
- Deep learning with Python 学习笔记(11)
总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...
- Python学习笔记之生成器、迭代器和装饰器
这篇文章主要介绍 Python 中几个常用的高级特性,用好这几个特性可以让自己的代码更加 Pythonnic 哦 1.生成器 什么是生成器呢?简单来说,在 Python 中一边循环一边计算的机制称为 ...
- Python 学习笔记(上)
Python 学习笔记(上) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(上) 基础知识 基本输入输出 模 ...
随机推荐
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...
- NDK(1)配置ndk,含eclipse,Android Studio1.5.1
现在的ndk配置已经非常简单,如果看到要cygwin的请关闭. 1,Eclipse 添加ndk linux,mac ,windows 相似, a.下载 ndk并解压, b.在eclipse的andro ...
- POJ 1322 Chocolate(母函数)
题目链接:http://poj.org/problem?id=1322 题意: 思路: double C[N][N]; void init() { C[0][0]=1; int i,j; for(i= ...
- 1343. Fairy Tale
1343 想了好一会 以为会有什么定理呢 没想到 就试着搜了 看来素数还是很多的 跑的飞快 注意会有前导0的情况 还有0,1不是素数... #include <iostream> #inc ...
- Git超级实用使用教程
一篇git入门实用教程,原文地址http://www.cnblogs.com/tugenhua0707/p/4050072.html 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. ...
- win8 iis安装及网站发布
win8 iis安装及网站发布 系统:win8 环境:vs2012 一:安装IIS 比较win7的安装来说,多选了几个钩钩,不然会报错,偶就遇到这样的错误. 控制面板->程序和功能->启动 ...
- Tyvj 1030 乳草的入侵
以一个简单的BFS对基础搜索做一个收尾好了. 给一个草,然后以这棵草为九宫格的中心,每周向周围八个方向扩散,问多少个星期能把这个农场占满. 遍历整个map,最后一个出队列的对应的星期数就是所求. // ...
- 使用Spring Session做分布式会话管理
在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将 ...
- php 调试工具及学习PHP垃圾回收机制了解引用计数器的概念
php代码工具:Xdebug 与分析工具 WinCacheGrind Xdebug之函数大全: string xdebug_call_class()返回当前被调用的函数或方法所属的类的类名 stri ...
- python练习程序(批量重命名)
# -*- coding: cp936 -*- import sys,os,string d=0; path="F://test" srcfile=os.listdir(path) ...