<PY><core python programming笔记>C8 条件与循环
来源:互联网 发布:卡尔.拉格斐 知乎 编辑:程序博客网 时间:2024/05/05 10:39
C8 条件与循环
8.1 if
#Python的缩进 可以避免C语言中的else悬挂
if expression:
if inner_expression:
inner_if_suite
elif expression2:
suite2
else:
suite3
#三元操作符简化if语句
smaller =x if x<y else y
8.5 while
8.5.1
while expre:
suite
8.5.2 计数循环
count =0
while (count<9):
suite
count+=1
8.5.3 无限循环
while True:
suite
8.5.4 状态控制循环
status =1
while status:
suite
if expre:
status =0 #也可以用break
else:
pass
8.5.5while else 或者 for else
while expre:
suite1
else:
suite2
#这里else在循环结束后执行 可以被while中的break跳过
8.6 for
for iter_var in iterable1[,iterable2]:
suite
#可以是 aString aList enumerate()
namelist=['Ben','Yen','Wen']
for i,eachLee in enumerate():
print "%d %s Lee"%(i+1,eachLee)
#可以是可迭代器类型
#可以是range(start or start=0,end,step=1) #start<=k<end
#xrange() 只在for内创建内存 适用大范围列表和高性能
8.7break
跳出上层循环 一般在if中判断后跳出
8.8continue
取消当前一次迭代 若符合条件则进入下一次迭代
8.9pass
不做任何事 仅仅是语法需要
8.11迭代器和iter()函数
通常是按照索引值进行迭代的 但设计了迭代器可以迭代一些有序列行为的的对象
列入字典的键 一个文件的行
迭代器:提供可扩展的迭代器接口
对列表带来了性能上的增强
在字典迭代中性能提升
创建真正的迭代接口,而不是原来的随机对象访问
与所有的已经存在的用户定义的类以及扩展的模拟序列和映射的对象向后兼容
迭代非序列集合时(字典或文件),可以创建更简洁的可读代码
8.11.3如何迭代
next() enumerate() any() all()
8.11.4使用迭代器
1.序列
>>>myTuple=(123,'xyz',45.67)
>>>i=iter(myTuple)
>>>i.next()
123
>>>i.next()
'xyz'
#直到无obj而迭代出错
2.字典
for eachLegend in lengends:
print legends[eachLengend]
3.文件
for eachLine in myFile:
print eachLine
#可变对象在迭代时不要修改, 因为迭代器是实际绑定的,修改了就不能再执行了
8.12列表解析(useful)
>>>[x**2 for x in range(6)]
[0,1,4,9,16,25]
>>>[x for x in range(6) if x%2] #加条件
[1,3,5]
>>>[(x+1,y+1) for x in range(3) for y in range(2)] #矩阵
[(1,1),(1,2),(2,1),(2,2),(3,1),(3,2)]
>>>len([word for line in f for word in line.split()]) #统计非空白字符数
>>>sum([len(word) for line in f for word in line.split()]) #统计总字长
8.13生成器表达式(列表解析的一个扩展,在内存上更有效,就是把方括号改圆括号)
>>>sum(len(word) for line in f for word in line.split()) #统计总字长
>>>((i,j) for i in rows for j in cols )
>>>longest=max(len(x.strip()) for x in f) #得到文件最长行
#注意,文件资源要及时释放
8.14相关模块
itertools
习题:
8-9:
def fibonacci(n):
fi=[0]
for i in range(n):
fi.append(i)
return fi
print fibonacci(5)
8-13:
#coding=utf-8
import time
def compare():
strtime=time.clock()
alist=range(1000000)
#for i in range(len(alist)):
# print alist[i],
for i in alist:
print i,
endtime=time.clock()
print "运行时间: ",(endtime-strtime)
compare()
- <PY><core python programming笔记>C8 条件与循环
- <PY><core python programming 笔记>C1 概述
- <PY><core python programming笔记>C5 数字
- <PY><core python programming笔记>C12 模块
- <PY><core python programming笔记>C3 Python基础
- <PY><core python programming笔记>C4 Python对象
- <PY><core python programming笔记>C22 扩展Python
- <PY><core python programming笔记>C2 快速入门
- <PY><core python programming笔记>C7 字典和集合类型
- <PY><core python programming笔记>C9 文件和输入输出
- <PY><core python programming笔记>C10 错误和异常
- <PY><core python programming笔记>C13 面向对象编程
- <PY><core python programming笔记>C14 执行环境
- <PY><core python programming笔记>C15 正则表达式
- <PY><core python programming笔记>C16 网络编程
- <PY><core python programming笔记>C17 网络客户端编程
- <PY><core python programming笔记>C18 多线程编程
- <PY><core python programming笔记>C19 图形用户界面编程
- WinCE调起控制面板中应用程序
- LabVIEW_2010工具包下载地址
- LeetCode - Median of Two Sorted Arrays
- linux下Epoll实现简单的C/S通信
- SSI项目struts2 2.3.15.1升级到2.3.16.1傻瓜式教程
- <PY><core python programming笔记>C8 条件与循环
- 小总结ASP.net
- iOS -- @property属性说明
- 计算机网络信息安全及防护策略探讨
- 上拉电阻的作用
- POJ 3254 (状态压缩DP)
- .sql文件导入mysql数据库中有图有真相
- Java Hex 16进制的 byte String 转换类 .
- 简易计时器