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
|