1 while语句

while用于实现循环语句,通过判断条件是否为真,来决定是否继续执行。

1.1 一般语法

语法如下:

while expression:

suite_to_repeat

1.2 计数

1 2

3 >>> cnt =04

5 >>> while(cnt < 9):6

7 ... print 'the index is', cnt8

9 ... cnt += 1

10

11 ...12

13 the index is014

15 the index is 1

16

17 the index is 2

18

19 the index is 3

20

21 the index is 4

22

23 the index is 5

24

25 the index is 6

26

27 the index is 7

28

29 the index is 8

代码块里包含print和自增语句,将被重复执行,知道cnt不下于9。

1.3 无限循环

while True:

suite_to_repeat

条件表达式一直为真。

2  for语句

for语句是python提供的另一个循环机制,可以用于遍历序列,可以用在列表解析和生成器表达式中。

2. 1 一般语法

for循环会访问一个可迭代对象(例如序列或叠加器)中的所有元素,并在所有条目处理过后结束循环。语法如下:

for iter_var in iterable:

suite_to_repeat

每次循环,iter_var迭代变量被设置为可迭代对象(序列、迭代器或其他支持迭代的对象)的当前元素,提供给suite_to_repeat语句块使用。

2.2 用于序列类型

主要介绍for循环迭代不同的序列对象:字符串、列表及元组。

迭代序列的三种方法:

(1)通过序列项迭代

每次迭代,eachName变量都被设置为列表中特定的某个元素。

(2)通过序列索引迭代

>>> namelist = ['Bob', 'Lisa', 'Henry']

>>> for nameIndex in range(len(namelist)):

... print namelist[nameIndex]

...

Bob

Lisa

Henry

使用len()函数获取序列长度,使用range()函数创建了要迭代的序列。

(3)使用项和索引迭代

使用内建的enumerate()函数

>>> namelist = ['Bob', 'Lisa', 'Henry']

>>> for i, eachName in enumerate(namelist):

... print i,eachName

...

0 Bob

1 Lisa

2 Henry

3 range()内建函数

range()完整语法如下:

range([start,] stop[, step])

range()会返回一个包含所有k的列表(start<=k

>>> range(3, 7)

[3, 4, 5, 6]

4 与序列相关的内建函数

sorted()、reversed()、enumerate()、zip()

reversed():返回一个反序访问的迭代器;

1 >>> namelist = ['Bob', 'Lisa', 'Henry']2

3 >>> years = [1978, 1989, 1990, 2003]4

5 >>> for name insorted(namelist):6

7 ... printname,8

9 ...10

11 Bob Henry Lisa12

13 >>>namelist14

15 ['Bob', 'Lisa', 'Henry']16

17 >>> for name inreversed(namelist):18

19 ... printname,20

21 ...22

23 Henry Lisa Bob24

25 >>> for i, name inenumerate(namelist):26

27 ... printi, name28

29 ...30

31 0 Bob32

33 1Lisa34

35 2Henry36

37 >>> for name, year inzip(namelist, years):38

39 ... printyear, name40

41 ...42

43 1978Bob44

45 1989Lisa46

47 1990 Henry

5 break语句

break语句用于结束当前循环跳转到下条语句。

6 continue语句

当遇到continue语句时,程序终止当前循环,并忽略剩余的语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环(while循环),将验证条件表达式;如果是迭代循环(for循环),验证是否还有元素可以迭代,只有在验证成功的情况下,才开始下一次迭代。

>>> valid =False>>> count = 3

>>> while count >0:

... input= raw_input('Enter passsword:')

...for eachPasswd inpasswdList:

...if input ==eachPasswd:

... valid=True

...break...if notvalid:

...print "invalid input"... count-= 1...continue...else:

...break

7 pass语句

pass语句不做任何事情(即NOP,No Operation,无操作),用于在需要有语句块的地方不写任何语句。

8 迭代器和iter()函数

从根本上来说,迭代器就是有一个next()方法的对象,而不是通过索引来计数。当你或是一个循环机制需要下一项时,调用迭代器的next()方法就可以获得它。

迭代器为类序列对象提供了一个类序列的接口,它们是一组数据结构,可以利用它们的索引从0开始一直"迭代"到序列的最后一个条目。

8.1 使用迭代器

(1)序列

>>> i = iter(myTuple)

>>> i.next()

123

>>> i.next()

'abc'

>>> i.next()

45.600000000000001

>>> i.next()

Traceback (most recent call last):

File "", line 1, in

StopIteration

序列会自动的产生它们字节的迭代器。

for I in seq:

do_something_to(i)

(2)字典

字典也是可迭代的python数据类型。字典的迭代器会遍历它的键(key)。语句for eachKey in myDict.keys()可以缩写为for eachKey in myDict。

>>> myDict = {'a':10, 'b':20, 'c':30}

>>> for eachKey in myDict:

... print eachKey, myDict[eachKey]

...

a 10

c 30

b 20

另外,python还有三个新的内建字典方法来定义迭代:myDict.iterkeys()(通过键迭代)、myDict.itervalues()(通过值迭代)及myDict.iteritems()(通过键-值对迭代)。

(3)文件

文件对象生成的迭代器会自动调用readline()方法,这样循环可以访问文本文件的所有行,就可以使用for eachline in myFile替换for eachline in myFile.readlines()

>>> myFile = open('testfile.txt')

>>> for eachline in myFile:

... print eachline

...

8.2 创建迭代器

对一个对象调用iter()就可以得到它的迭代器。语法如下:

iter(obj)

iter(func, sentinel)

如果传递一个参数给iter(),会检查传递的参数是不是一个序列,如果是,根据索引从0一直迭代到序列结束。如果是传递的两个参数给iter(),会重复的调用func,直到迭代器的下个值等于sentinel。

9 列表解析

列表解析可用于动态的创建列表,语法如下:

[expr for iter_var in iterable]

前面的expr应用于序列的每个成员,最后的结果值是该表达式产生的列表。迭代变量并不需要是表达式的一部分。

>>> [x**2 for x in range(6)]

[0, 1, 4, 9, 16, 25]

还可以和if表达式结合使用,扩展语法如下:

[expr for iter_var in iterable if cond_expr]

这个语法会过滤或"捕捉"满足条件表达式cond_expr的序列成员。

>>> [x for x in range(6) if x % 2]

[1, 3, 5]

(1)举例:矩阵样例

如一个3行5列的矩阵

>>> [(x+1, y+1) for x in range(3) for y in range(5)]

[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]

10 生成器表达式

生成器表达式是列表解析的一个扩展。生成器是特定的函数,允许你返回一个值,然后"暂停"代码的执行,稍后恢复。

列表解析的不足是必须生成所有的数据,用以创建整个列表。生成器的基本语法和列表相似,不过不是真正的创建数字列表,而是返回一个生成器,这个生成器每次计算出一个条目后,把这个条目"产生"(yield)出来。

生成器表达式如下:

(expr for iter_var in iterable if cond_expr)

(1)举例:交叉配对样例

>>> rows = [1, 2, 3, 17]

>>> defcols():

... yield 56... yield 2... yield 1

>>> x_product_pairs = ((i, j) for i in rows for j incols())

>>> for pair inx_product_pairs:

... printpair

...

(1, 56)

(1, 2)

(1, 1)

(2, 56)

(2, 2)

(2, 1)

(3, 56)

(3, 2)

(3, 1)

(17, 56)

(17, 2)

(17, 1)

(2)重构样例

获取文件中长度最大的行:

1 f = open('/etc/motd','r')2

3 longest = max(len(x.strip()) for x inf)4

5 f.close()6

7 return longest

简化如下:

1 return max(len(x.strip()) for x in open('/etc/motd'))

python中循环迭代语句_python条件与循环-循环相关推荐

  1. Python中表达式和语句及for、while循环练习

    Python中表达式和语句及for.while循环练习 1)表达式 常用的表达式操作符:x + y, x - yx * y, x / y, x // y, x % y逻辑运算:x or y, x an ...

  2. python中if else语句_python 中if else 语句的作用及示例代码

    引入:if-else的作用,满足一个条件做什么,否则做什么. if-else语句语法结构 if 判断条件: 要执行的代码 else: 要执行的代码 判断条件:一般为关系表达式或bool类型的值 执行过 ...

  3. 怎样跳出Python条件语句 继续判断下一个条件语句_Python条件判断、循环与迭代...

    昨天学完了数据类型,那么今天学习什么鸭? 惨绿青年:今天来学习条件判断.循环和迭代吧. 条件判断 惨绿青年:说条件判断之前,先给你说下前面的布尔值. 我:布尔值咋了,怎么又说它鸭? 惨绿青年:布尔值不 ...

  4. python中的pass语句_Python中pass的作用与使用代码示例

    本篇文章小编给大家分享一下Python中pass的作用与使用代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Python中pass的作用 空语 ...

  5. [转载] python中if嵌套语句_Python的if语句怎么嵌套

    参考链接: Python中的决策(if,if..else,嵌套if,if-elif) Python中if语句有三种结构,即 if.if else 和 if elif else,这 3 种条件语句之间可 ...

  6. python中的def语句_Python def 函数

    Python def 函数 在Python中,函数声明和函数定义是视为一体的.在Python中,函数定义的基本形式如下: def add(a,b): return a+b 在这里说明几点: (1)在P ...

  7. python中的switch语句_python技巧 switch case语句

    不同于C语言和SHELL,python中没有switch case语句,关于为什么没有,官方的解释是这样的 使用Python模拟实现的方法: def switch_if(fun, x, y): if ...

  8. python中执行sql语句_python中执行sql语句

    来源:疯狂的蚂蚁的博客 总结和整理 本文介绍了 Python 操作 MYSQL.执行 SQL 语句.获取结果集.遍历结果集.取得某个字 段.获取表字段名....... (游标 对象)用于执行查询和获取 ...

  9. python中的case语句_python技巧 switch case语句

    不同于C语言和SHELL,python中没有switch case语句,关于为什么没有,官方的解释是这样的 使用Python模拟实现的方法: def switch_if(fun, x, y): if ...

最新文章

  1. expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.spring
  2. R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等
  3. android button 添加事件_2019最新Android常用开源库总结
  4. iptables小案例,nat表应用
  5. python爬虫可视化界面_python爬虫---垃圾分类可视化界面
  6. RocketMQ-初体验RocketMQ(07)-使用API操作RocketMQ_顺序消息 ordermessage
  7. 《疯狂JAVA讲义》3
  8. Java迭代器Iterator
  9. 【视频课】图像分割最新内容来了(言有三新录制6大理论部分+1个案例实践讲解)...
  10. java怎么导入项目?java已有项目如何导入eclipse?
  11. grep,sort,uniq 用法例子
  12. 使用cardme读写VCard文件,实现批量导入导出电话簿
  13. 数据结构(五)层次遍历
  14. 团队组成五个基本要素_【记录】综合分部宁波分队团队拓展活动
  15. 暑期训练日志----2018.8.3
  16. TensorFlow第五步:返回起点、深挖坑,解刨一个麻雀。
  17. linux系统安装升级win10双系统,Win10 安装Linux ubuntu-18.04双系统(安装指南)
  18. [洛谷 P3992] [BJOI2017]开车
  19. DEV ComBoxEdit实现模糊检索数据
  20. python的基础操作_python列表基础操作

热门文章

  1. 数字音视频技术:音频中的一些概念(采样率, 位深度, 声道数, Sample/Frame/Packet)
  2. go 的des加解密
  3. 龟兔赛跑——多线程练习
  4. c语言编写程序数一下 1到100的所有整数中出现多少次数字9
  5. React总结篇之十_动画
  6. 开源应用框架BitAdminCore:更新日志20180817
  7. Python爬虫(二)——豆瓣图书决策树构建
  8. 链路层的封装方式与IP选路 (二)
  9. 程序员如何精确评估开发时间?
  10. Redis 21问,你接得住不?