python 学习---迭代
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 迭代(Iteration) 列表生成式(List Comprehensions)生成器(generator) 5 # 可迭代对象(Iterable) 迭代器(Iterator) 6 ''' 7 1. Iterable是一种object,它具有__iter__或__getitem__方法,能够返回一个iterator 8 2. Iterator是一种用于next方法的object。调用next()方法,可以每次取得iterator中的一个元素。 9 3. Iteration: 在一个数据容器中遍历它的成员的过程 就是iteration。 10 4. Generator 是那种通过yield方法来遍历元素的函数 11 Generator 也是iterator,但是只能遍历它一次。它的好处是不存储元素值,也就不占用内存空间 12 ''' 13 from collections import Iterable, Iterator 14 15 def g(): #定义一个Generator 16 yield 1 17 yield 2 18 yield 3 19 20 print('Iterable? [1, 2, 3]:', isinstance([1, 2, 3], Iterable)) #判断列表是否可迭代 21 print('Iterable? \'abc\':', isinstance('abc', Iterable)) #判断字符串是否可迭代 22 print('Iterable? 123:', isinstance(123, Iterable)) #判断一个整数是否可迭代 23 print('Iterable? g():', isinstance(g(), Iterable)) #判断一个生成器是否可迭代 24 25 #判断一个列表是否是迭代器 26 print('Iterator? [1, 2, 3]:', isinstance([1, 2, 3], Iterator)) 27 #判断一个迭代器对象是否是迭代器 28 print('Iterator? iter([1, 2, 3]):', isinstance(iter([1, 2, 3]), Iterator)) 29 #判断一个字符串是否是迭代器 30 print('Iterator? \'abc\':', isinstance('abc', Iterator)) 31 #判断一个整数是否是迭代器 32 print('Iterator? 123:', isinstance(123, Iterator)) 33 #判断一个生成器是否是迭代器 34 print('Iterator? g():', isinstance(g(), Iterator)) 35 36 # iter list: 37 print('for x in [1, 2, 3, 4, 5]:') 38 for x in [1, 2, 3, 4, 5]: 39 print(x) 40 41 print('for x in iter([1, 2, 3, 4, 5]):') 42 for x in iter([1, 2, 3, 4, 5]): 43 print(x) 44 45 print('next():') 46 it = iter([1, 2, 3, 4, 5]) #创建迭代器对象 47 print(next(it)) #输出迭代器的下一个元素 48 print(next(it)) 49 print(next(it)) 50 print(next(it)) 51 print(next(it)) 52 53 d = {'a': 1, 'b': 2, 'c': 3} #定义一个字典 54 55 # iter each key: 迭代字典的key 56 print('iter key:', d) 57 for k in d.keys(): 58 print('key:', k) 59 60 # iter each value: 迭代字典的value 61 print('iter value:', d) 62 for v in d.values(): 63 print('value:', v) 64 65 # iter both key and value: 66 print('iter item:', d) 67 for k, v in d.items(): 68 print('item:', k, v) 69 70 # iter list with index: 71 print('iter enumerate([\'A\', \'B\', \'C\']') 72 for i, value in enumerate(['A', 'B', 'C']): 73 print(i, value) 74 75 # iter complex list: 76 print('iter [(1, 1), (2, 4), (3, 9)]:') 77 for x, y in [(1, 1), (2, 4), (3, 9)]: 78 print(x, y)