While / for 语句

来源:互联网 发布:股市热点追踪软件 编辑:程序博客网 时间:2024/05/16 05:22

Python语法规则

1:语句逐行运行,除非碰见if等控制语句

2:块与语句的边界会自动检测,因为它没有大括号之类的东西,所以就是缩进

3:复合语句的形式:首句后紧跟“:”,紧接着是缩进语句

4:文档字符串!=注释,尽管同样都是被忽略,但是在运行时会自动附加在对象上,可以由文档工具显示。


语句分割符

Python语句一般是行尾表结束,但当语句太长时,我们可以通过一些方式让他位于多行之中

1:使用语法括号对,使语句跨行。括号对包括(),{},或[]

2:语句以反斜线结尾,实现跨行。(现不再使用)

3:其它规则,三重引号字符串块或者先用分号终止语句,然后紧接着输入

while 循环

while <test1>:        <statement1>         # loop body    if <test2>: break    # Exit loop now, skip else    if <test3>: continue # Go to top of loop now, to test1else:                    # Optional else    <statement2>         # Run if didn't exit loop with break
break      跳出整个循环

continue 跳出当前循环

pass        什么事都不做,只是空占位语句。或者写成...也是什么都不做

else         循环正常离开时执行,也就是没碰到break语句

下面C语言中常见的形式在Python里面是不行的 while (( x = next()) != null ) { ...process x...}


for 循环

是一个通用的序列迭代器,可以遍历任何有序的序列对象内的元素,可用于字符串,列表,元组以及其他内置可迭代对象

for <target> in <object>:    <statements>    if <test>: break    if <test>: continueelse:    <statements>


通过下面的例子,你会发现它实际上关键还是赋值的形式,与我们前面说学的区别就是它后面时一个序列,然后我们会以,为分隔符,一次用一段进行赋值。

>>> D={'a':1, 'b':2, 'c':3}>>> for k in D:... print(k, '=>', D[k])... ('a', '=>', 1)('c', '=>', 3)('b', '=>', 2)>>> list(D.items())[('a', 1), ('c', 3), ('b', 2)]>>> for (k,v) in D.items():... print(k, '=>', v)... ('a', '=>', 1)('c', '=>', 3)('b', '=>', 2)>>> for ((a,b), c) in [((1,2),3),((4,5),6)]:... print(a,b,c)... (1, 2, 3)(4, 5, 6)

Python 3的扩展赋值:关键也就是*的引入

>>> for (a,*b,c) in [(1,2,3,4),(5,6,7,8)]:...print(a,b,c)...1 [2,3] 45 [6,7] 8>>> for all in [(1,2,3,4),(5,6,7,8)]:             #对比上面字典的时候,k为啥就只是一个值'a'?为啥现在为整个元组...a,b,c = all[0],all[1:3],all[3]...print(a,b,c)...1 (2,3) 45 (6,7) 8
佐证:for 循环的列表,会以逗号为界限,每次取出一组然后进行处理

>>> items = ["aaa", 111, (4,5),2.1]>>> tests = [(4,5), 3.4]>>> for k in tests:                                        #k 第一次值为(4,5)跟上面的all一样都是一次乘装一个分隔单元... if k in items:... print(k, "was found")... else:... print(k, "not found")... ((4, 5), 'was found')(3.4, 'not found')

for 对文件循环读取

file = open('test.txt', 'r')print(file.read())file = open('test.txt')       #默认按read模式打开while True:    char =file.read(1)        #for会一次把文件加载至内存    if not char: break        #文件结尾处,break          print(char)file = open('test.txt')                while True:    line = file.readline()    if not line: break    print(line, end='')file = open('test.txt', 'rb')while True:    chunk = file.read(10)     #因为上面它是按rb读的,所以就是每次读入10个byte.    if not chunk: break    print(chunk)for char in open('test.txt').read():      #for会一次把文件加载至内存    print(char)for line in open('test.txt').readlines(): #readlines方法会一次把文件载入到行字符串列表,然后通过for在一次次读取。    print(line, end='')for line in open('test.txt'):             #iterator:best text input mode    print(line, end='')                   #end来抑制一个\n,因为行字符串本身就有一个
while循环读取文件内容每次读取一行或一个字符,倒数2,3中的for和readlines的效果时先把文件都放入内存。你万一文件太大了呢?而iterator是文件迭代器,每循环一次读入一行。
while的机制跟最后一个for语句用的iterator一样,但是他俩速度还是有差别的,Itherator 在Python中是以C语言速度运行,而while循环版本时通过Python虚拟机运行Python字节码的。




原创粉丝点击