Skip to content

Commit 305bd29

Browse files
📝 更新Python文档,增强列表操作示例与切片语法说明
- 精简并优化了列表赋值和切片的示例,提升了内容的清晰度与实用性。 - 增加了切片语法糖的汇总,详细阐述了不同切片用法及其等价形式,增强了文档的可读性与参考价值。 - 引入了使用`slice`对象的好处,提升代码的可读性与复用性。
1 parent cadca59 commit 305bd29

File tree

1 file changed

+55
-20
lines changed

1 file changed

+55
-20
lines changed

docs/docs/选择编程语言/Python/3序列.mdx

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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]
114114
a[0] = 100
115115
print(a) # [100, 2, 3]
116-
```
117116

118-
这种赋值也适用于分片,例如,将列表的第 2,3 两个元素换掉:
119-
120-
```python showLineNumbers
117+
# 这种赋值也适用于分片,例如,将列表的第 2,3 两个元素换掉
121118
a[1:3] = [200, 300]
122119
print(a) # [100, 200, 300]
123-
```
124-
125-
事实上,对于连续的分片(即步长为 1 ),Python 采用的是整段替换的方法,两者的元素个数并不需要相同,
126120

127-
```python showLineNumbers
121+
# 事实上,对于连续的分片(即步长为 1 ),Python 采用的是整段替换的方法,两者的元素个数并不需要相同,
128122
# 例如,将 [11,12] 替换为 [1,2,3,4]:
129123
a = [10, 11, 12, 13, 14]
130124
a[1:3] = [1, 2, 3, 4]
131125
print(a) # [10, 1, 2, 3, 4, 13, 14]
132-
```
133126

134-
用这种方法来删除列表中一个连续的分片:
135-
136-
```python showLineNumbers
127+
# 用这种方法来删除列表中一个连续的分片:
137128
a = [10, 1, 2, 11, 12]
138129
print(a[1:3]) # [1, 2]
139130
a[1:3] = []
140131
print(a) # [10, 11, 12]
141-
```
142-
143-
对于不连续(间隔 step 不为 1)的片段进行修改时,两者的元素数目必须一致:
144132

145-
```python showLineNumbers
133+
# 对于不连续(间隔 step 不为 1)的片段进行修改时,两者的元素数目必须一致:
146134
a = [10, 11, 12, 13, 14]
147135
a[::2] = [1, 2, 3]
148136
print(a) # [1, 11, 2, 13, 3]
149137
```
150138

151-
Python 提供了删除列表中元素的方法 'del':
139+
Python 提供了删除列表中元素的方法 `del`:
152140

153141
```python showLineNumbers
154142
a = [100, 'a', 'b', 200]
@@ -264,13 +252,19 @@ a.reverse()
264252
print(a) # [6, 5, 4, 3, 2, 1]
265253
```
266254

255+
:::tip
256+
257+
如果不想改变原来列表中的值,可以使用切片语法。
258+
267259
```python showLineNumbers
268-
# 如果不想改变原来列表中的值,可以使用这样的方法:
269260
a = [1, 2, 3, 4, 5, 6]
270261
b = a[::-1]
271262
print(a) # [1, 2, 3, 4, 5, 6]
272263
print(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)
14101403
print(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

14151450
sorted函数用于对序列进行排序。

0 commit comments

Comments
 (0)