zoukankan      html  css  js  c++  java
  • Python 列表推导、迭代器与生成器

    1、列表推导

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    numbers = [i for i in range(10) if i % 2 == 0]
    print(numbers)
     
    seq = ["one", "two", "three"]
    for i, element in enumerate(seq):
        print(i, element)
     
    def treatment(pos, element):
        return ('%d: %s' % (pos, element))
     
    print ([treatment(i, element) for i, element in enumerate(seq)])
    1
    2
    3
    4
    5
    6
    enumerate(sequence, [start=0])
     
    Return an enumerate object.
    sequence must be a sequence, an iterator, or some other object which supports iteration.
    The next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the corresponding value obtained from iterating over iterable.
    enumerate() is useful for obtaining an indexed series: (0, seq[0]), (1, seq[1]), (2,seq[2]), ....

    2、迭代器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MyIterator(object):
        def __init__(self, step):
            self.step = step
        def __next__(self): # 3.0之后一般采用该样式
            if self.step == 0:
                raise StopIteration
            self.step -= 1
            return self.step
        def __iter__(self):
            return self
     
    for i in MyIterator(5):
        print(i)

    3、生成器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def fibonacci():
        a, b = 0, 1
        while True:
            yield b
            a, b = b, a + b
    fib = fibonacci()
    print([next(fib) for i in range(10)]) # >=python 3.0
    print(fib.__next__() for i in range(10)]) # >=python 3.0
    print(fib.next() for i in range(10)]) # <python 3.0





  • 相关阅读:
    iPhone X 的“刘海”正是苹果的品牌象征
    中国首届原型设计大赛在成都举办
    hdu1114Piggy-Bank(完全背包)
    hdu2602Bone Collector(01背包)
    漏洞百出的线段树!!
    hdu1078FatMouse and Cheese
    hdu2859Phalanx
    poj3186Treats for the Cows(区间dp)
    uva10088格点多边形
    快速幂快速乘
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/5046618.html
Copyright © 2011-2022 走看看