zoukankan      html  css  js  c++  java
  • for迭代

    for迭代

    Python中最简单的循环机制是 while,打开交互式解释器,执行1到的5的循环

    >>> count=1
    >>> while count<=5:
    ...     print count
    ...     count+=1
    ... 
    1
    2
    3
    4
    5
    

    【使用break跳出循环】

    如果你想要循环在某一条件下停止,但不确定在哪次循环跳出,可以在无限循环中使用break语句。下面我们铜鼓python的input()函数从键盘输入一行字符串,然后将字符串首字母转化成大写输出,当输入的一行为字符q,跳出循环;

    >>> while True:
    ...     stuff=raw_input('string to capitalize[type q to quit]: ')
    ...     if stuff=="q":
    ...             break
    ...     print (stuff.capitalize())
    ... 
    string to capitalize[type q to quit]: test
    Test
    string to capitalize[type q to quit]: qq
    Qq
    string to capitalize[type q to quit]: q
    

    使用continue跳出循环开始`

    有时我们不想结束整个循环,仅仅向跳到下一轮循环的开始,下面一个例子,读入一个整数,如果它是奇数则输出他的平方数,如果是偶数则跳过,使用q来退出循环;

    >>> while True:
        	value=raw_input('please input the number[type p to quit]: ')
        	if value=="q":
                break
        	number=int(value)
       		if number%2==0:
               continue
        	print (number ,"squared is ",number*number)
    
    please input the number[type p to quit]: 3
    (3, 'squared is ', 9)
    please input the number[type p to quit]: 2
    please input the number[type p to quit]: q
    

    列表,字符串,元祖,字典和集合等都是python可迭代的对象,元祖或者列表再依次迭代过程中产生一项,而字符串迭代会产生一个字符;

    >>> word='cat'
    >>> for letter in word:
    ...     print letter
    ... 
    c
    a
    t
    

    对字典进行迭代将返回字典中的键

    >>> accusation={'room':'ballroom','weapon':'lead pipe','person':'COl.mustard'}
    >>> for card in accusation:
    ...     print card
    ... 
    person
    weapon
    room
    

    如果想对字典的值进行迭代,可以使用字典的values()函数

    >>> for card in accusation.values():
    ...     print card
    ... 
    COl.mustard
    lead pipe
    ballroom
    

    如果想返回健值对,可以使用字典的items()函数

    >>> for item in accusation.items():
    ...     print item
    ... 
    ('person', 'COl.mustard')
    ('weapon', 'lead pipe')
    ('room', 'ballroom')
    

    【使用range()生成自然数列】

    >>> for x in range(0,3):
    ...     print x
    ... 
    0
    1
    2
    

    下面是如何从2到0的反向创建序列:

    >>> for x in range(2,-1,-1):
    ...     print x
    ... 
    2
    1
    0
    

    下面的代码将step设置为2.得到1到10的偶数

    >>> list(range(0,11,2))
    [0, 2, 4, 6, 8, 10]
    

    【使用zip()并行迭代】
    Zip()函数对多个序列进行并行迭代

    >>> days=['Monday','Tuesday','Wednesday']
    >>> fruit=['banana','orange','petch']
    >>> drinks=['coffee','tea','beer']
    >>> for day,fruits,drink in zip(days,fruit,drinks):
    ...     print (day,":drink",drink,"--eat:",fruits)
    ... 
    ('Monday', ':drink', 'coffee', '--eat:', 'banana')
    ('Tuesday', ':drink', 'tea', '--eat:', 'orange')
    ('Wednesday', ':drink', 'beer', '--eat:', 'petch')
    

    Zip()函数在最短序列用完时就会停止,

    dict()函数会将两项序列比如元祖,列表,字符串,创建一个字典,同时使用zip()函数可以遍历多个序列,在具有相同移位的项之间创建元祖。

    >>> english='Monday','Tuesday','Wednesday'
    >>> french='Lundi','Mardi','Mercredi'
    >>> list(zip(english,french))
    [('Monday', 'Lundi'), ('Tuesday', 'Mardi'), ('Wednesday', 'Mercredi')]
    

    配合使用dict()函数和zip()函数的返回值可以得到一本微型的英法字典

    >>> dict(zip(english,french))
    {'Tuesday': 'Mardi', 'Wednesday': 'Mercredi', 'Monday': 'Lundi'}
    

    【其他方式的迭代】

    列表推导式:
    创建一个1到5的偶数列表
    >>> a_list=[number for number in range(1,6) if number%2==1]
    >>> a_list
    [1, 3, 5]
    

    字典推导式
    最简单的例子就像是{key_expression: value_expression for expression in iterable}
    使用字典推导创建字典squares,把0-9内的整数作为健,每个健的平方作为对应的值

    >>> squares={key:key*key for key in range(10)}
    >>> squares
    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
    >>> 
    
    >>> word='letters'
    >>> letter_count={letter:word.count(letter) for letter in word}
    >>> letter_count
    {'s': 1, 'r': 1, 'e': 2, 'l': 1, 't': 2}
    
    

    对字符串letters出现的字母进行了循环,计算每个字母出现的次数

  • 相关阅读:
    Java基础知识回顾-20(泛型)
    Java基础知识回顾-19(Collect接口,Iterator迭代器与增强for循环)
    Java基础知识回顾-18(Math类,Arrays类和大数据运算)
    Java基础知识回顾-17(基本类型包装类与System类)
    Java基础知识回顾-16(Date,DateFormat和Calendar)
    PSP DAILY软件功能说明书
    第六周PSP
    王者荣耀交流协会第二次Scrum立会
    找bug——加分作业
    第五周PSP
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5703595.html
Copyright © 2011-2022 走看看