Python 流程控制之If语句
if 条件测试表达式
Python 的比较操作
所有的Python 对象都支持比较操作
1,可用于测试相等性,相对大小等。
2,如果是复合对象,Python会检查其所有部分,包括自动遍历各级嵌套对象,直到可以得出最终结果。
测试操作符
1,"==" 操作符测试值的相等性
2,“is” 表达式测试对象的一致性
Python中不同类型的比较方法
1,数字:通过相对大小进行比较
2,字符串:按照字典次序逐字进行比较
3,列表和元组:自左至右比较各部分内容
4,字典:对排序之后的(键,值)列表进行比较
Python中真和假的含义
1,非零数字为真,否则为假
2,非空对象为真,否则为假
3,None则始终为假
组合条件测试
x and y :与运算
x or y:或运算
not x :非运算
1,and
2, or
3, not:返回True 或 False
注意:Python 中,and 和 or 运算会返回真或假的对象,而不是True或False
1, 对象在本质上不是"真",就是"假"
and 和 or 是短路操作符
iF 测试的语法结构
1, if boolean_expression1:
suite1
2, elif boolean_expression2:
suite2
…
3,else:
else_suite
4,elif:语句是可选的
5,仅用于占位,而后再填充相关语句时,可以使用pass
if/else 三元表达式
A = x if y else z
表达的意思是:当 y 表达是的条件满足了,则A 等于 x
否则 A 就等于 z
a = 7
b = 9
if a > b:
a = y
else :
a = z
赋值方式:
a = 7
b = 9
比如: max = a if a > b else b
其通用条件表达式语法格式为:
expression 1 if boolean_expression else expression2
如果boolean_expression的值为True ,则条件表达式的结果为 expression1,否则为expression2
print max
输出结果为 9
Python 流程空的while 和 for循环
while 循环
1,用于编写通用迭代结构
2,顶端测试为真,即会执行循环体,并会重复多次测试知道为假后执行循环后的其它语句
for 循环
1,一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素
2,可用于字符串,元组,列表和其它的内置可迭代对象,以及通过类所创建的新对象
Python也提供了一些能过进行隐性迭代的工具
1,in 成员关系测试
2,列表解析
3,map,reduce 和filter 函数
while 循环
语法格式:
while boolean_expression:
while_suite
else:
else_suite
1, else 分支为可选部分
2, 只要boolean_expression的结果为True ,循环就会执行;
3, boolean_expression的结果为False时终止循环,此时如果有else分支,则会执行。
while :
while bool_expression:
while_suite
else:
else_suite
break:跳出最内层的循环;
continue:跳到所处的最近层循环的开始出;也就是下一个循环
pass:点位语句
else 代码块:循环正常终止才会执行;如果循环终止是由break 跳出导致的,则else不会执行;
For 循环
for expression1 in iterable(可迭代对象):
for_suite
else :
else_suite
1,通常,expression或是一个单独的变量,或是一个变量序列,一般以元组的形式给出。
2,如果以元组或列表用于expression,则其中的每个数据项都会拆分到表达式的项,
例如:
T=[(1,2),(3,4),(5,6),(7,8)]
for (a,b) in T:
print a,b
xrange 跟 range 的区别
xrange 会一个一个的吐出一个值
range 会先生存一个序列出来
一, For 循环比while 循环执行速度快
二, Python 提供了两个内置函数,用于在For 循环重定制特殊的循环
1,range 或 xrange
range :一次性地返回连续的整数列表
xrange : 一次产生一个数据元素,相较于range更节约空间
2,zip
返回并行的元素元组的列表,常用于在For循环重遍历数个序列
1)。取得一个或多个序列为参数,将给定序列中的并排的元素配成元组,返回这些元组的列表
当参数长度不同时,zip会以最短序列的长度为准
2)。可在for循环重用于实现并行迭代
L1 = [1,2,3,4,5,6,7]
L2 = ['a','b','c','d','e','f','g']
zip(L1,L2)
此为输出结果: [(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'f'),(7,'g')]
3) 。zip也常用语动态构造字典
keys = [1,2,3,4,5,6,7]
values = ['Mon','Tus','Wed','Thu','Fri','Sat'.'Sun']
D = {}
for (k,y) in zip (keys,values):D[k] = y
4) 。产生偏移后的记过
Python
1,动态语言
sys.getrefcount()
增加对象的引用计数场景;
对象创建时;
将对象添加进容器时;list.append
当对象被当做参数传递给函数时
s1 = s2 = s3 = ‘abc’
s1 = ‘abc’
减少引用计数:
引用此对象的某变量名被显式销毁:del x
给引用此对象的某变量名被设定为引用了其它对象
从容器中移除对象时,类似list.pop()
容器本身被销毁
2,if boolean_expression:
…
elif boolean_expression:
...
else
...
3, while
while boolean_expression:
while_suite
if boolean_expression2:continue
if boolean_expression3:break
else:
else_suite
4, for
for expression in object
for_suite
if boolean_expression2:continue
if boolean_expression2:break
else:
else_suite
死循环:while True:
…
例子:
In [89]: test=[]
In [90]: while True:
x = raw_input('Enter an entry:')
if x == 'q' or x == 'quit':
break
else:
test.append(x)