首页 > 代码库 > python的控制流
python的控制流
python有三种控制流
if条件
for循环
while循环
python的缩进使用强制代码正确对齐,
对齐的是一对;缩进的属于一个块。
------------------------------------
ifexpression
statement
[elif]expression:
statement
[else]:
statement
一个if最多只能和一个else配对,但是可以和多个elif配对。
expression可以是多重的,使用not、and、or。
条件表达式:
min= x if x < y else y #等效于min= (x < y and [x] or [y])[0]
max= x if x > y else y #等效于max= (x > y and [x] or [y])[0]
------------------------------------
whileexpression:
statement
[else:]
statement
条件为真一直执行。
------------------------------------
forval in iterable:
statement
[else]:
statement
通过序列元素迭代:
foreach in seqname:
print(each)
通过序列索引迭代:
foreach in range(len(seqname)):
print(seqname[each])
使用元素和索引迭代:
forindex,each in seqname:
print(index+1,each)
range内建函数:
range(stop):取从0到stop的整数,不包括stop。
range(start,stop[, step]):返回start到stop之间的整数,间隔为step(默认为1),不包括stop。
------------------------------------
break语句:
break用来终止循环(for和while);继续往后执行。
for或while的else是可选的,正常情况是在for或while循环结束后运行一次,如果调用break那么它们的else将不执行。
continue语句:
跳过当前循环块中的剩余语句,继续执行下一次循环。
pass语句:
用来表示一个空的语句块,不做任何事情。
------------------------------------
迭代器:
序列(字符串、元祖、列表)、字典、文件都是可迭代对象。
序列可以直接迭代,字典迭代键,文件迭代整个文件所有行。
迭代器相关的内建函数:
iter(iterable):创建一个可迭代对象的迭代器。
iter(callable,sentinel):创建一个迭代器。
reversed(sequence):返回一个序列的逆序迭代器。
enumerate(iterable[,start]):接受一个可迭代对象参数,返回一个枚举迭代器,也就是iter的每个元素的index值和iter值组成的元祖。
all(iterable):如果迭代器所有值都是True,返回True。
any(iterable):如果迭代器任意对象都是True,返回True。
next(iterable[,default]):返回迭代器的下一个成员,如果设置default到达迭代器末尾返回这个值,否则发出异常StopIteration。
------------------------------------
列表解析和生成器:
列表解析的格式:
[exprfor iter_val in iterable]
[exprfor iter_var in iterable if cond_expr]
矩阵:
[(x+1,y+1)for x in range(m) for y in range(n)]
统计文件非空字符总和:
len([wordfor line in file for word in line.split()])
生成器的格式:
(exprfor iter_var in iterable if cond_expr)
统计文件非空字符总和:
sum(len(word)for line in file for word in line.split())
交叉配对:
pairs= ((i,j) for i in list1 for j in list2)
重构:
longest= max(len(x.strip() for x in file)
python的控制流