[2015-08-02] python013
来源:互联网 发布:在淘宝上怎么注册网店 编辑:程序博客网 时间:2024/05/17 10:54
Python流程控制之while和for循环
while循环
- 用于编写通用迭代结构
- 顶端测试为真即会执行循环体,并会重复多次测试直到为假后,执行循环后的其他语句
for循环
- 一个通过的序列迭代器,用于遍历任何有序的序列对象内的元素
- 可用于字符串、元组、列表和其他的内置可迭代对象,以及通过类所创建的新对象
Python中也提供了一些能够进行隐形迭代的工具
- in成员关系测试
- 列表解析
- map、reduce和filter函数
while循环:
语法格式:
while boolean_expression: while_suiteelse: else_suite
- else分支为可选部分
- 只要boolean_expression的结果为Ture,循环就会执行
boolean_expression的结果为False时终止循环,此时如果有else分支,则会执行
举例:
print语句,后面加逗号,表示不换行打印
注意:
- break:跳出最内层的循环
- continue:跳到所处的最近层循环开始处
- pass:站位语句
- else代码块:循环正常终止才会执行,如果循环终止是由break跳出导致的,则else不会执行
练习1:逐一显示指定列表中的所有元素
count=0while count<len(l1): print l1[count] count+=1
while l1: print l1[0] l1 = l1[1:]
while l1: print l1[0] l1.pop(0)
练习2:求100以内所有偶数之和
思路:除2取模
练习3:逐一显示指定字典的所有键,并于显示结束后说明总键数
d1 = {'x':1,'y':23,'z':78}keylist = d1.keys()while keylist: print keylist[0] keylist.pop(0)else: print len(d1)
练习4:创建一个包含了100以内所有奇数的列表
l1=[]x=1while x<100: l1.append(x) x+=2 else: print l1
练习5:逆序逐一显示一个列表的所有元素
while l1: print l1[-1] l1.pop() //默认弹出最后一个元素
练习6:列表l1=[0,1,2,3,4,5,6],列表l2=[“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”],以第一个列表中的元素为键,以第二个列表中的元素为值,生成字典d1.
l1=[0,1,2,3,4,5,6]l2=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]d1={}count=0 if len(l1)==len(l2): while count<len(l1): d1[l1[count]]=l2[count] count+=1 else: print d1
生成死循环:
while True:
for循环:
语法格式:
for expression in iterable: for_suiteelse: else_suite
- expression或是一个单独的变量,或是一个变量序列,一般以元组的形式给出
- 如果以元组或列表用于expression,则其中的每个数据项都会拆分到表达式的项
如,逐一显示指定列表中所有元素
for x in "dashuifeng": print x
- for循环比while循环执行速度快
Python提供了两个内置函数,用于在for循环中定制特殊的循环:
range或xrange:
- range:一次性地返回连续的整数列表
- xrange:一次产生一个数据元素,相较于range更节约空间
zip:
返回并行的元素元组的列表,常用于在for循环中遍历数个序列,如:
zip也常用于动态构造字典
练习1、逐一分开显示指定字典d1中的所有元素,类似如下:
k1 v1
k2 v2
…
for (k,v) in d1.items(): print k,v
练习2、逐一显示列表中l1=[1,2,3,4,5,6,7,8]中的索引为奇数的元素
for i in range(1,len(l1),2): print l1[i]
练习3、将属于列表l1=[1,2,3,4,5,6,7],但不属于列表l2=[1,2,3,5,7]的所有元素定义为一个新列表l3
l3=[]for i in l1: if i not in l2: l3.append(i)
练习4、已知列表namelist=[1,2,3,4,5,6,7],删除列表removelist=[3,7,9],请将属于removelis列表中的每个元素从namelist中移除(属于removelist,但不属于namelist的忽略即可)
for i in removelist: if i in namelist: namelist.remove(i)
总结:
1、动态语言
sys.getrefcont()
- 增加对象的引用计数场景:
- 对象创建时
- 将对象添加进容器时:类似list.append()
- 当对象被当做参数传递给函数时
- 为对象创建另外变量名
- 减少引用计数:
- 引用此对象的某变量名被显示销毁:del()
- 给引用此对象的某变量名重新赋值
- 从容器中移除对象时,类似list.pop()
- 容器本身被销毁
2、if
if boolean_expression1: ...elif boolean_expression2: ......else: ...
3、while
while boolean_expression1: while_suite if boolean_expression2:continue if boolean_expression3:breakelse: else_suite
4、for
for expression in object: for_suite if boolean_expression2:continue if boolean_expression3:breakelse: else_suite
小例子:
输入若干内容,作为列表元素,知道输入q或quit退出
test=[] while True: x=raw_input('Enter an entry:') if x=='q' or x=='quit': breakelse: test.append(x)
- [2015-08-02] python013
- python013 -- 常用标准库
- Python013列表生成
- python013 Python3 条件控制
- python013 Python3 循环语句
- 2015/02/08
- [2015-08-02] python014
- 2015-08-02
- 推荐系统Easyrec学习日记--2015/02/08
- 02类型转化 进程空间 数组2015/08/26
- [2015-08-08] python019
- 小白学开发(iOS)OC_手动内存管理(2015-08-02)
- 小白学开发(iOS)OC_ 单个对象的内存管理(2015-08-02)
- 2015/02/02 - 2015/02/03
- 2015-08-10-----2015-08-11
- 06/02/08
- 2005-08-02
- 日记[ 2007-02-08 ]
- 【STL源码剖析】关联式容器
- 在android项目中遇到的小问题
- 容斥定理的简单应用
- android BaseAdapter的getView的调用时机
- linux网络编程-内存管理
- [2015-08-02] python013
- mysql常用查询语句
- StringBuffer容器的应用
- 面试准备--数据结构与算法(二)--栈的图文解析及其java实现
- Android系统架构和内核及虚拟机
- 面试准备之数据结构
- JavaScript-基本知识(2)
- 【STL源码剖析】空间配置器
- Android 测试技能树