《Python 第五章》条件,循环和其他语句
(print, import, 赋值语句)
pass, del, exec语句的用法。
有些自以为已经掌握的知识点,还隐藏着一些让人惊讶的特性。
* 使用逗号输出 *
在 Python中,冒号 (:) 用来标识语句块的开始
* 条件和条件语句 布尔值*
下面的值在作为布尔表达式的时候,会被解释器看作假 (false)
False, None, 0, "", (), [], {}
*1, 比较运算符 x == y, x <= y, x is y, x is not y, x in y, x not in y
在Python中比较运算和赋值运算一样是可以连接的。
(1) 并行迭代
(3) 翻转和排序迭代
pass, del, exec语句的用法。
有些自以为已经掌握的知识点,还隐藏着一些让人惊讶的特性。
* 使用逗号输出 *
>>> 1, 2, 3 (1, 2, 3) >>> print 1, 2, 3 # print 参数并不能像我们预期那样构成一个元组 1 2 3 >>> print (1, 2, 3) (1, 2, 3) >>> 'age', 42 ('age', 42) >>> name = 'Gumby' >>> mr = 'Mr' >>> greeting = 'Hello' >>> print name, mr, greeting Gumby Mr Hello >>> import math as abc #别名 >>> abc.sqrt(4) 2.0 >>> from math import sqrt as bcd # 为函数提供别名 >>> bcd(4) 2.0# 序列解包
>>> x, y, z = 1, 2, 3 >>> print x, y, z 1 2 3 >>> x, y = y, x >>> print x, y, z 2 1 3 >>> values = 1, 2, 3 >>> values (1, 2, 3) >>> x, y, z = values >>> x 1 # popitem 将键值作为元组返回 >>> scoundrel = {'name': 'Robin', 'girlfriend': 'Marion'} >>> key, value = scoundrel.popitem() >>> key 'girlfriend' >>> value 'Marion'
* 链式赋值 *
x = y = somefunction()* 增量赋值 *
>>> x = 2 >>> x += 1 >>> x *= 2 >>> x 6 >>> fnord = 'foo' >>> fnord += 'bar' >>> fnord *= 2 >>> fnord 'foobarfoobar'* 语句块 : 缩排的乐趣 *
在 Python中,冒号 (:) 用来标识语句块的开始
* 条件和条件语句 布尔值*
下面的值在作为布尔表达式的时候,会被解释器看作假 (false)
False, None, 0, "", (), [], {}
>>> bool("") False >>> bool(42) True if 的使用 num = input('Enter a number : ') if num > 0: print 'positive' elif num < 0: print 'negative' else : print 'zero'更复杂的条件
*1, 比较运算符 x == y, x <= y, x is y, x is not y, x in y, x not in y
在Python中比较运算和赋值运算一样是可以连接的。
a if b else c* 断言 *
>>> age = 10 >>> assert 0 < age < 100 >>> assert 0 < age < 10 Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError, * while 循环 * ---while1.py--- x = 1 while x <= 100: print x x += 1 ---while2.py --- name = '' while not name.strip(): name = raw_input('Please enter your name: ') print 'Hello, %s!' % name* for 循环 * 比while更简洁,应该尽量多用!
>>> numbers = range(10) >>> for i in numbers : print i* 循环遍历字典元素 *
>>> d = {'x' : 1, 'y' : 2, 'z' : 3} >>> for key in d : print key, 'corresponds to', d[key] ... y corresponds to 2 x corresponds to 1 z corresponds to 3 >>> for key, value in d.items(): print key, 'corresponds to', value ... y corresponds to 2 x corresponds to 1 z corresponds to 3* 一些迭代工具 *
(1) 并行迭代
>>> names = ['anne', 'beth', 'george', 'damon'] >>> ages = [12, 45, 32, 102] >>> for i in range(len(name)): print names[i], ages[i] anne 12 beth 45 george 32 damon 102 >>> zip(names , ages) [('anne', 12), ('beth', 45), ('george', 32), ('damon', 102)] >>> for name, age in zip(name, ages): print name, age anne 12 beth 45 george 32 damon 102(2) 编号迭代
for index, string in enumerate(strings): if 'xxx' in string: strings[index] = '[censored]'这个函数可以在提供索引的地方迭代索引-值对
(3) 翻转和排序迭代
>>> sorted([4,3, 6, 2, 6, 3, 8]) [2, 3, 3, 4, 6, 6, 8] >>> sorted('Hello, world') [' ', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w'] >>> list(reversed('Hello,world')) ['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'H'] >>> ''.join(reversed('Hello,world')) 'dlrow,olleH'