@@ -110,45 +110,33 @@ print(d) # [2, 3, 'hello', 2, 3, 'hello']
110110### 列表的内置方法
111111
112112``` python showLineNumbers
113- print (a) # [1, 2, 3]
113+ a = [1 , 2 , 3 ]
114114a[0 ] = 100
115115print (a) # [100, 2, 3]
116- ```
117116
118- 这种赋值也适用于分片,例如,将列表的第 2,3 两个元素换掉:
119-
120- ``` python showLineNumbers
117+ # 这种赋值也适用于分片,例如,将列表的第 2,3 两个元素换掉
121118a[1 :3 ] = [200 , 300 ]
122119print (a) # [100, 200, 300]
123- ```
124-
125- 事实上,对于连续的分片(即步长为 1 ),Python 采用的是整段替换的方法,两者的元素个数并不需要相同,
126120
127- ``` python showLineNumbers
121+ # 事实上,对于连续的分片(即步长为 1 ),Python 采用的是整段替换的方法,两者的元素个数并不需要相同,
128122# 例如,将 [11,12] 替换为 [1,2,3,4]:
129123a = [10 , 11 , 12 , 13 , 14 ]
130124a[1 :3 ] = [1 , 2 , 3 , 4 ]
131125print (a) # [10, 1, 2, 3, 4, 13, 14]
132- ```
133126
134- 用这种方法来删除列表中一个连续的分片:
135-
136- ``` python showLineNumbers
127+ # 用这种方法来删除列表中一个连续的分片:
137128a = [10 , 1 , 2 , 11 , 12 ]
138129print (a[1 :3 ]) # [1, 2]
139130a[1 :3 ] = []
140131print (a) # [10, 11, 12]
141- ```
142-
143- 对于不连续(间隔 step 不为 1)的片段进行修改时,两者的元素数目必须一致:
144132
145- ``` python showLineNumbers
133+ # 对于不连续(间隔 step 不为 1)的片段进行修改时,两者的元素数目必须一致:
146134a = [10 , 11 , 12 , 13 , 14 ]
147135a[::2 ] = [1 , 2 , 3 ]
148136print (a) # [1, 11, 2, 13, 3]
149137```
150138
151- Python 提供了删除列表中元素的方法 ' del' :
139+ Python 提供了删除列表中元素的方法 ` del ` :
152140
153141``` python showLineNumbers
154142a = [100 , ' a' , ' b' , 200 ]
@@ -264,13 +252,19 @@ a.reverse()
264252print (a) # [6, 5, 4, 3, 2, 1]
265253```
266254
255+ :::tip
256+
257+ 如果不想改变原来列表中的值,可以使用切片语法。
258+
267259``` python showLineNumbers
268- # 如果不想改变原来列表中的值,可以使用这样的方法:
269260a = [1 , 2 , 3 , 4 , 5 , 6 ]
270261b = a[::- 1 ]
271262print (a) # [1, 2, 3, 4, 5, 6]
272263print (b) # [6, 5, 4, 3, 2, 1]
264+ if a == b:
265+ print (' 这是一个回文序列' )
273266```
267+ :::
274268
275269#### clear方法、copy方法
276270
@@ -440,7 +434,6 @@ print(averages)
440434# [{'name': 'Alice', 'average': 87.67}, {'name': 'Bob', 'average': 85.0}, {'name': 'Charlie', 'average': 91.67}]
441435```
442436
443-
444437## 字典
445438
446439字典是 Python 中另一种非常重要的数据结构,它是一个** 无序** 、** 可变** 的键值对(key-value pair)集合。
@@ -1410,6 +1403,48 @@ b = slice(1, 3)
14101403print (a[b]) # [2, 3]
14111404```
14121405
1406+ #### 切片语法糖汇总
1407+
1408+ ` [a:b:c] ` 获取从a到b的元素,步长为c。等价于 ` slice(a, b, c) ` 。
1409+
1410+ 缺省则为None。所有有了以下语法糖汇总。
1411+
1412+ | 语法 | 等价于 | 实例 | 典型用法 |
1413+ | --- | --- | --- | --- |
1414+ | ` [:] ` | ` slice(None, None, None) ` | ` a[:] ` | 浅拷贝|
1415+ | ` [start:] ` | ` slice(start, None, None) ` | ` a[1:] ` | 去掉前 start 个元素|
1416+ | ` [:-n] ` | ` slice(None, -n, None) ` | ` a[:-1] ` | 去掉最后 n 个元素|
1417+ | ` [-n:] ` | ` slice(-n, None, None) ` | ` a[-1:] ` | 获取最后 n 个元素|
1418+ | ` [:n] ` | ` slice(None, n, None) ` | ` a[:2] ` | 获取前 n 个元素 |
1419+ | ` [::-1] ` | ` slice(None, None, -1) ` | ` a[::-1] ` | 反转判断回文序列 |
1420+ | ` [::2] ` | ` slice(None, None, 2) ` | ` a[::2] ` | 获取偶数索引,可以加 del 删除偶数索引元素|
1421+ | ` [1::2] ` | ` slice(1, None, 2) ` | ` a[1::2] ` | 获取奇数索引,可以加 del 删除奇数索引元素|
1422+ | ` lst[:] = seq ` | ` lst[slice(None, None, None)] = seq ` | ` a[:] = [] ` | 原地清空或整体替换 |
1423+ | ` lst[n:m] = [1, 2, 3] ` | ` lst[slice(n, m, None)] = [1, 2, 3] ` | ` a[1:3] = [0, 0, 0] ` | 替换列表中第 n 到 m 个元素(长度不需要一致) |
1424+ | ` lst[n:n] = [1, 2, 3] ` | ` lst[slice(n, n, None)] = [1, 2, 3] ` | ` a[2:2] = [7, 8] ` | 在索引 n 处插入多个元素 |
1425+
1426+ :::tip
1427+ 语法糖很方便,但是使用 ` slice ` 对象可以赋值给变量,有如下好处:
1428+ - 提升代码可读性。
1429+ - 可作为参数传递给函数。
1430+ - 便于复用。
1431+ ``` python showLineNumbers
1432+ REVERSE_INDEX = slice (None , None , - 1 )
1433+ a = [1 , 2 , 3 , 4 , 5 ]
1434+ b = [6 , 7 , 8 , 9 , 10 ]
1435+
1436+ print (a[REVERSE_INDEX ]) # [5, 4, 3, 2, 1]
1437+ print (b[REVERSE_INDEX ]) # [10, 9, 8, 7, 6]
1438+
1439+ def reverse_list (lst , index ):
1440+ return lst[index]
1441+
1442+ print (reverse_list(a, REVERSE_INDEX )) # [5, 4, 3, 2, 1]
1443+ print (reverse_list(b, REVERSE_INDEX )) # [10, 9, 8, 7, 6]
1444+
1445+ ```
1446+ :::
1447+
14131448### sorted函数
14141449
14151450sorted函数用于对序列进行排序。
0 commit comments