zoukankan      html  css  js  c++  java
  • Python -- 循环技巧(Looping Techniques)

    1.当想同时得到索引和对应的值时,可以用enumerate()函数

    for i, v in enumerate(['tic', 'tac', 'toe']):
        print i, v
    0 tic
    1 tac
    2 toe
    

     2.要同时循环两个或多个序列,可以与zip()函数配对。

    questions = ['name', 'quest', 'favorite color']
    answers = ['lancelot', 'the holy grail', 'blue']
    for q, a in zip(questions, answers):
        print 'what is your {0}? It is {1}.'.format(q, a)
    
    ------------------------------------------------------
    what is your name? It is lancelot.
    what is your quest? It is the holy grail.
    what is your favorite color? It is blue.
    

     3.要反向循环序列,首先是正向的指定序列,然后调用revers()函数。

    for i in reversed(xrange(1, 10, 2)):
        print i
    
    --------------------------------------
    9
    7
    5
    3
    1
    

     4. 要以排序顺序循环序列,请使用sorted()函数,该函数返回一个新的排序序列,而不改原来的序列

    basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
    for f in sorted(set(basket)):
        print f
    -------------------------------------------------------------------
    apple
    banana
    orange
    pear
    

     5.当循环使用字典时,可以使用iteritems()方法同时检索关键字和对应的值。

    knights = {'gallahad': 'the pure', 'robin': 'the brave'}
    for k, v in knights.iteritems():
        print k, v
    ---------------------------------------
    gallahad the pure
    robin the brave
    

     6.在循环序列时有时候会很有挑战性; 可以创建新列表这样通常更简单和安全。

    mport math
    raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
    filtered_data = []
    for value in raw_data:
        if not math.isnan(value):
            filtered_data.append(value)
    
    print filtered_data
    -----------------------------------------------------
    [56.2, 51.7, 55.3, 52.5, 47.8]
    

     7.不同类型之间序列的比较

    序列对象可以与具有相同序列类型的其他对象进行比较。 比较使用词典排序:首先比较前两个项目,如果它们不同,则决定比较结果; 如果它们相等,则将下两个项目进行比较,依此类推,直到任一序列耗尽。 如果要比较的两个项目本身是相同类型的序列,则词典比较是递归地进行的。 如果两个序列的所有项目比较相等,则这些序列被认为是相等的。 如果一个序列是另一个序列的初始子序列,则较短的序列是较小(较小的)序列。 字符串的字典排序使用单个字符的ASCII排序。 相同类型的序列之间的比较的一些例子:

    (1, 2, 3)              < (1, 2, 4)
    [1, 2, 3]              < [1, 2, 4]
    'ABC' < 'C' < 'Pascal' < 'Python'
    (1, 2, 3, 4)           < (1, 2, 4)
    (1, 2)                 < (1, 2, -1)
    (1, 2, 3)             == (1.0, 2.0, 3.0)
    (1, 2, ('aa', 'ab'))   < (1, 2, ('abc', 'a'), 4)
    

     请注意,比较不同类型的对象是合法的。 结果是确定性但是随意的:类型按照他们的名字排序。 因此,列表始终小于字符串,字符串始终小于元组等。混合数字类型根据其数值进行比较,因此0等于0.0等。

  • 相关阅读:
    Go语言v1.8正式发布,有显著的性能提升和变化(go适合服务器编程、网络编程)
    NET生成二维码
    组合模式
    Spring MVC
    前端事件
    Play Framework + ReactiveMongo
    DDD领域驱动设计初探
    jsRender模板引擎
    C#分布式缓存Couchbase
    ABP
  • 原文地址:https://www.cnblogs.com/wangpfcnblogs/p/6697022.html
Copyright © 2011-2022 走看看