2、迭代

  如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的。

  只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代key:

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
...         print(key)
... 
a
b
c

还可以迭代value,通过 for value in d.values() ,同时迭代key, value可以用 for k, v in d.items() 。

  Python中for循环可以用于所有的可迭代对象,包括字符串:

>>> for i in 'ABC':
...     print(i)
... 
A
B
C

判断一个对象是否是可迭代的,采用collections模块的Iterable类型判断:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

  日常练习代码:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Date    : 2018-05-22 19:46:15
 4 # @Author  : Chen Jing (cjvaely@foxmail.com)
 5 # @Link    : https://github.com/Cjvaely
 6 # @Version : $Id$
 7 
 8 # Iteration迭代:如果给定一个list或tuple,
 9 # 我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代
10 #
11 # dict可以迭代:
12 # >>> d = {'a': 1, 'b': 2, 'c': 3}
13 # >>> for key in d:
14 # ...     print(key)
15 #
16 # 迭代value,可以用for value in d.values(),
17 # 如果要同时迭代key和value,可以用for k, v in d.items()
18 #
19 # 请使用迭代查找一个list中最小和最大值,并返回一个tuple
20 
21 
22 def findMinAndMax(L):
23     if len(L) == 0:
24         return (None, None)
25     elif len(L) == 1:
26         return (L[0], L[0])
27     else:
28         return (sorted(L)[0], sorted(L)[len(L) - 1])
29 
30 
31 # 测试
32 if findMinAndMax([]) != (None, None):
33     print('测试失败!')
34 elif findMinAndMax([7]) != (7, 7):
35     print('测试失败!')
36 elif findMinAndMax([7, 1]) != (1, 7):
37     print('测试失败!')
38 elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
39     print('测试失败!')
40 else:
41     print('测试成功!')

 

posted on 2018-07-16 16:26  Cjv  阅读(123)  评论(0编辑  收藏  举报