shipengfei

Add Docs

1 +## 列表操作
2 +
3 +### 1. 基本操作
4 +
1 +## 列表&元组&字典操作
2 +
3 +### 1. 基本操作
4 +
...@@ -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
...@@ -28,4 +38,153 @@ ...@@ -28,4 +38,153 @@
28 print '%d %s'%(i,name) 38 print '%d %s'%(i,name)
29 ``` 39 ```
30 40
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 +
31 190
...\ No newline at end of file ...\ No newline at end of file
......