Showing
3 changed files
with
167 additions
and
0 deletions
Personal/Shipfi/Python/LearnDoc/list - 副本.md
0 → 100644
... | @@ -2,6 +2,16 @@ | ... | @@ -2,6 +2,16 @@ |
2 | 2 | ||
3 | ### 1. 迭代 | 3 | ### 1. 迭代 |
4 | 4 | ||
5 | +> 迭代中使用的语句或关键字包括 for , while. | ||
6 | +> | ||
7 | +> 迭代的目标对象包括列表,元组,Map,实现Enumable的对象等 | ||
8 | +> | ||
9 | +> 关键字 : for, while,range, list, tuple, map, enumable | ||
10 | + | ||
11 | + | ||
12 | + | ||
13 | +#### 1.1 For迭代 | ||
14 | + | ||
5 | * 使用For迭代序列对象 | 15 | * 使用For迭代序列对象 |
6 | 16 | ||
7 | ```python | 17 | ```python |
... | @@ -29,3 +39,152 @@ | ... | @@ -29,3 +39,152 @@ |
29 | ``` | 39 | ``` |
30 | 40 | ||
31 | | 41 | |
42 | + | ||
43 | +#### 1.2 While迭代 | ||
44 | + | ||
45 | + while迭代比较简单,语句如下 | ||
46 | + | ||
47 | +```python | ||
48 | +count = 0; | ||
49 | +while(count<9): | ||
50 | + print 'the index is:',count | ||
51 | + count+=1 | ||
52 | +``` | ||
53 | + | ||
54 | + | ||
55 | + | ||
56 | +#### 1.3 Range/xRange生成数组 | ||
57 | + | ||
58 | +> Range语法 1: range(start,end,step=1) | ||
59 | +> | ||
60 | +> 函数返回 一个包含有K的列表,这里 start<=k<end,从start到end, k每次递增step, step不可以为零。 | ||
61 | +> | ||
62 | +> Range语法2 : range(end) | ||
63 | +> | ||
64 | +> 函数返回一个K长度的列表,从0开始,到end-1结束,列表为[0..end-1] | ||
65 | + | ||
66 | +```python | ||
67 | +#[2,5,8,11,14,17] | ||
68 | +range(2,19,3) | ||
69 | +#[3,4,5,6] | ||
70 | +range(3,7) | ||
71 | +#[0,1,2,3,4,5,6] | ||
72 | +range(7) | ||
73 | +``` | ||
74 | + | ||
75 | +> xrange只用在for循环中,语法与range相同,比起range,性能更优异。 | ||
76 | +> | ||
77 | +> xrange不在内存中创建完整的拷贝,所以它是不生成整个列表的。 | ||
78 | + | ||
79 | +```python | ||
80 | +for inx in xrange(7): | ||
81 | + print '%3d' % inx | ||
82 | +``` | ||
83 | + | ||
84 | + | ||
85 | + | ||
86 | +#### 1.4 循环中的else语句 | ||
87 | + | ||
88 | +> 在python中,在for/while代码块内可以使用else,来表示**循环正常结束**后所执行的语句。 | ||
89 | +> | ||
90 | +> 在循环中,如果存在else, 那么break语句会跳过else的执行。 | ||
91 | + | ||
92 | +```python | ||
93 | +## 最大公约数函数 | ||
94 | +def showMaxFactor(num): | ||
95 | + count = num/2 | ||
96 | + while count>1: | ||
97 | + if num%count == 0: | ||
98 | + print 'largest fator of %d is %d' % (num,count) | ||
99 | + break; | ||
100 | + | ||
101 | + count -= 1 | ||
102 | + ## 注意,下面的else是循环内的else,而与上面的if并不匹配 | ||
103 | + else : | ||
104 | + print num, 'is prime' | ||
105 | + | ||
106 | +for eachNum in range(10,21): | ||
107 | + showMaxFactor(eachNum); | ||
108 | +``` | ||
109 | + | ||
110 | + | ||
111 | + | ||
112 | +#### 1.5 迭代器/iter()函数 | ||
113 | + | ||
114 | +> 迭代器为类序列对象提供了一个类序列的**接口** | ||
115 | +> | ||
116 | +> 序列:是一组数据结构,利用它们的索引从0开始一直“迭代”到序列的最后一个条目。 | ||
117 | +> | ||
118 | +> Python的迭代无缝支持序列对象,它还允许程序员迭代非序列类型,包括用户定义的对象。 | ||
119 | +> | ||
120 | +> 使用迭代器,可以迭代不是序列,但是表现出序列行为的对象。例如字典的key, 一个文件的行等 。 | ||
121 | + | ||
122 | +迭代器的原理: | ||
123 | + | ||
124 | +> 迭代器的原理同Java/.net的实现机理差不多。 | ||
125 | +> | ||
126 | +> 迭代器是一个有next()方法的对象,当一个循环机制需要下一项时,调用迭代器的next()方法可以获得它。当迭代到最后一个时,再次迭代会引发StopInteration异常 ,告诉外部调用者,迭代完成。 | ||
127 | + | ||
128 | +```python | ||
129 | +# iter方法 | ||
130 | +myTuple = (12,'xy',34.2) | ||
131 | +i = iter(myTuple) | ||
132 | +# 12 | ||
133 | +i.next() | ||
134 | +# 'xy' | ||
135 | +i.next() | ||
136 | +# '34.2 | ||
137 | +i.next() | ||
138 | +# Exception for StopIteration | ||
139 | +i.next() | ||
140 | +``` | ||
141 | + | ||
142 | + | ||
143 | + | ||
144 | +#### 1.6 字典的迭代 | ||
145 | + | ||
146 | +> 字典数据结构的迭代就是通过iterator来实现的。 | ||
147 | +> | ||
148 | +> python还引进了三个新的内建字典的方法来更好的迭代字典数据结构: | ||
149 | + | ||
150 | +```python | ||
151 | +## 通过keys迭代 | ||
152 | +myDict.iterKeys() | ||
153 | +## 通过values迭代 | ||
154 | +myDict.iterValus() | ||
155 | +## 通过key/value迭代 | ||
156 | +myDict.iteritems() | ||
157 | +``` | ||
158 | + | ||
159 | +一个典型的字典遍历 | ||
160 | + | ||
161 | +```python | ||
162 | +knignts = {'gallahad': 'the pure','robin':'the brave'} | ||
163 | +for k,v in knights.iteritems(): | ||
164 | + print k,v | ||
165 | +``` | ||
166 | + | ||
167 | + | ||
168 | + | ||
169 | +#### 1.7 文件迭代 | ||
170 | + | ||
171 | +文件的迭代访问, | ||
172 | + | ||
173 | +* 可以 通过readlines()实现 | ||
174 | + | ||
175 | + ```python | ||
176 | + myFile = open('config.txt') | ||
177 | + for eachLine in myFile.readlines(): | ||
178 | + print eachLine | ||
179 | + ``` | ||
180 | + | ||
181 | + | ||
182 | +* 直接内置了迭代器访问 | ||
183 | + | ||
184 | + ```python | ||
185 | + myFile = open('config.txt') | ||
186 | + for eachLine in myFile : | ||
187 | + print eachLine | ||
188 | + ``` | ||
189 | + | ||
190 | + | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment