答案是:B: `[1, 2, 3, [1, 0]]`
### 專業(yè)分析:
在 Python 中,當我們使用 `a.copy()` 來創(chuàng)建列表 `a` 的一個副本 `b` 時,實際上執(zhí)行的是一個 **淺拷貝**。
#### 概念回顧:
- **淺拷貝**(Shallow Copy):淺拷貝會創(chuàng)建一個新的列表對象,但其中的元素仍然是原始列表中元素的引用。這意味著如果列表中包含可變對象(例如另一個列表),淺拷貝不會遞歸復制這些可變對象,而是復制它們的引用。
#### 執(zhí)行分析:
1. 初始賦值:
```python
a = [1, 2, 3, [1, 'a']]
```
2. 淺拷貝:
```python
b = a.copy()
```
此時,`a` 和 `b` 是兩個獨立的列表對象。對于像整數(shù) `1`, `2`, `3` 這樣的不可變對象來說,它們是直接復制的。但是,對于 `[1, 'a']` 這個子列表來說,`b` 中的這個子列表僅僅是 `a` 中子列表的引用。
3. 修改列表 `a`:
```python
a[-1][-1] = 0
```
這里的 `a[-1]` 取的是子列表 `[1, 'a']`。`a[-1][-1]` 實際指向字符串 `'a'`。我們將其改為 `0`,因此 `a` 變?yōu)榱?`[1, 2, 3, [1, 0]]`。
由于 `b` 中的最后一個元素引用的是與 `a` 相同的子列表,因此這一修改也對 `b` 產(chǎn)生了影響。最終,`b` 變成 `[1, 2, 3, [1, 0]]`。
因此,正確答案是:B: `[1, 2, 3, [1, 0]]`。