Python学习笔记11

条件语句:If – elif – else

 

ifexpression1:

    expr1_true_suite

elifexpression2:

    expr2_true_suite

         ……

elifexpressionN:

    exprN_true_suite

else:

    none_of_the_above_suite

 

条件表达式, 即三元操作符

C语言语法: C?X:Y 例: result= x<y? x: y

Python语法:X if C else Y  result= x if x < y else y

 

while循环: 

whileexpression:

    suite_to_repeat

else:

   final process  # while循环结束后的操作。

 

 

for循环:

foriter_var in iterable:

    suite_to_repeat

else:#for循环结束后的操作

 

 

=使用项和索引迭代===  

两全其美的办法是使用内建的 enumerate() 函数, 代码如下:  

>>>nameList = ['Donn', 'Shirley', 'Ben', 'Janice',

...      'David', 'Yen', 'Wendy']

>>>for i, eachLee in enumerate(nameList):

...      print "%d %s Lee" % (i+1,eachLee)

 

break语句

Python中的break 语句可以结束当前循环然后跳转到下条语句, 类似C 中的传统break .  常用在当某个外部条件被触发(一般通过 if 语句检查), 需要立即从循环中退出时. break 语句可以用在 while 和 for 循环中. break语句触发后,while和for循环自带的else语句也被忽略。

 

continue语句

不管是 Python, C, Java 还是其它任何支持 continue 语句的结构化语言中, 一些初学者有这样的一个误解:continue 语句"立即启动循环的下一次迭代". 实际上,当遇到 continue 语句时, 程序会终止当前循环,并忽略剩余的语句, 然后回到循环的顶端. 在开始下一次迭代前,如果是条件循环, 我们将验证条件表达式.如果是迭代循环,我们将验证是否还有元素可以迭代. 只有在验证成功的情况下, 我们才会开始下一次迭代.

 

 

pass语句

Python提供了pass关键字做语句占位符,表示当前不做任何操作。相当于C语言的空大括号{}。

 

迭代器:

迭代器为容器对象提供了一个类似序列对象的接口,可以逐一访问容器对象中的元素。形式上迭代器就是实现了next()方法的容器对象。通过不断的调用next()方法遍历整个容器,直到返回StopIteration异常,说明遍历完成。

 

 

如何创建迭代器:

工厂方法:iter(obj) 将容器对象转化为迭代对象,例如:序列则根据索引从0开始转化为迭代对象.

                iter(func, sentinel): 重复调用方法func生成值,直到生成的值为sentinel为止。

 

自定义迭代器: 实现了__iter__() 和next()方法的类都可以作为迭代器使用。

 

内建函数:

reverse():返回逆序的迭代器。

enumerate():

any()

all()

 

列表,元组,字典,文件(每一行是一个成员对象)都是迭代器。itertools 模块包含了各种有用的迭代器。

 

 

 

列表解析:

[expr for iter_var in iterable <if cond_expr>] # if子句是可选的。

 

生成器表达式:

它与列表解析非常相似,而且它们的基本语法基本相同; 不过它并不真正创建数字列表, 而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来.

 

(exprfor iter_var in iterable <if cond_expr>) # if子句是可选的。

 

列表解析语法用中括号[], 生成器表达式用小括号(),功能类似,只是列表解析需要的数据都会在内存中,而生成器表达式只有部分数据在内存中,对于需要一个巨大的列表数据时生成器表达式更适合一些。

 

 

生成器使用例子:

生成器表达式就好像是懒惰的列表解析(这反而成了它主要的优势). 它还可以用来处理其他列表或生成器, 例如这里的 rows 和 cols :

 

rows= [1, 2, 3, 17]

 

defcols(): # example of simple generator

    yield 56 

    yield 2 

    yield 1

 

不需要创建新的列表, 直接就可以创建配对. 我们可以使用下面的生成器表达式:

 

x_product_pairs= ((i, j) for iin rows for j in cols())  #表达式中使用了两个循环。这两个循环之间是笛卡尔乘积的关系。

 

现在我们可以循环 x_product_pairs , 它会懒惰地循环 rows 和 cols :

 

>>>for pair in x_product_pairs:

...     print pair

...

(1,56)

(1,2)

(1,1)

(2,56)

(2,2)

(2,1)

(3,56)

(3,2)

(3,1)

(17,56)

(17,2)

(17,1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值