[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循环中遍历数个序列,如:
      zip1

    • zip也常用于动态构造字典
      zip2

练习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)
0 0
原创粉丝点击