python流程控制语句

if 判断语句

if boolean_expression1:
    suitel
elif boolean_expression1:
    suite2
....
else:
    else_suite

elif 语句是可选的


三元表达式

通常在为某变量设置默认值时通常用到如下格式:

if X:
     A = y
else:
    A = z

可以改写为三元表达式模式:

A = y if X else z

while循坏

  • 用于编写通用迭代结构
  • 顶端测试为真即会执行循坏体,并会重复多次测试直到为假后执行循坏后的其他语句

语法格式

while boolean_expression
    while_suite
else:
    else_suite

else 分支为可选部分

只要boolean_expression结果为True循坏就执行

boolean_expression结果为Flse时终止循坏,此时有else分支,则执行else.

补充:

break:跳出最内层循坏

continue :跳出本层循坏的本次循坏,执行本层循坏下次循坏。

pass:占位语句

例子: 逐一显示指定类型中的所有元素

l = [1,2,3,4]

In [2]: count = 0
In [6]: while count < len(l):
print(l[count])
count +=1
...:     
 1
 2
 3
 4

for循坏

语法格式

for expression1 in iterable:
    for_suite
else:
    else_suite

expression1通常是一个单独的变量或者是一个变量序列。 如果以元组或者列表用于expression1,则其中的每个数据项都会拆分到表达式的项,如下:

T = [(1,2),(3,4)]
for (a,b) in T:
    print(a,b)

备注:对于可迭代对象,使用for循坏是最合理的


python的迭代

迭代:重复做一件事

iterable(可迭代对象)

对象包含_iter_()或者_getitem_()就是一个可迭代对象。

迭代器:对可迭代对象使用_iter_方法就可以得到一个迭代器,要使迭代器指向下一个元素可以使用next(),迭代器是一次性,迭代不可逆,一旦没有元素迭代了就会抛出stopIteration异常

下面是一个迭代器例子:

In [7]: l1 = [1,2,3]

In [8]: l2 = iter(l1)

In [9]: print(l2)
<list_iterator object at 0x7fb24f6ee860>

In [10]: next(l2)
Out[10]: 1

In [11]: next(l2)
Out[11]: 2

In [12]: next(l2)
Out[12]: 3

In [13]: next(l2)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-13-e421ec37cfe2> in <module>()
----> 1 next(l2)

StopIteration:

python列表解析

列表解析是python迭代机制的一种应用,它常用于实现创建新的列表,因此要放置于[]中

语法:

[expression for iter_var in iterable]

[expression for iter_var in iterable if cond_expr]

例子说明:

In [14]: l3 = [i**2 for i in range(10) ]

In [15]: print(l3)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

In [16]: l3 = [i**2 for i in range(10) if i >5 ]

In [17]: print(l3)
[36, 49, 64, 81]

例子:
文件a.txt内容
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
#
# 2.
要求使用列表解析,从文件a.txt中取出每一行,做成下述格式
# [{‘name’:'apple','price':10,'count':3},{...},{...},...]
file_path = 'a.txt'
encoding = 'utf-8'
with open(file_path,encoding=encoding) as f:
l1 = f.readlines()

print([dict(zip(['name', 'price', 'count'], i)) for i in [i.split() for i in l1]])




生成器表达式

生成器表达式并不是真正创建数字列表,而是返回一个生成器对象,次对象每次计算出一个条目后,把这个条目yield出来。

序列过长,并且每次只需要获取一个元素时,应当考虑使用生成器表达式而不是列表解析

语法:

(expression for iter_var in iterable)

(expression for iter_var in iterable if cond_expr)

例子说明:

In [18]: l3 = (i**2 for i in range(10) if i >5 )

In [19]: print(l3)
<generator object <genexpr> at 0x7fb24f66f258>

In [20]: next(l3)
Out[20]: 36

In [21]: next(l3)
Out[21]: 49

In [22]: next(l3)
Out[22]: 64

In [23]: next(l3)
Out[23]: 81

In [24]: next(l3)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-24-7c7f71d1f0ed> in <module>()
----> 1 next(l3)

StopIteration:

posted on 2017-06-19 19:20  Ryanxiange  阅读(178)  评论(0编辑  收藏  举报

导航