在给定的选项中,我们需要分析每个方法在删除列表 `a` 中最后一项时的正确性。
1. **A: `pop()`**
- 使用 `pop()` 方法时,如果不提供参数,默认会删除并返回列表中的最后一个元素。
- 示例:
```python
a = [1, 2, 3]
a.pop() # 结果是 a = [1, 2]
```
- 这是正确的用法。
2. **B: `a.remove(-1)`**
- `remove(x)` 方法会删除列表中值为 `x` 的第一个元素,而不是索引。
- 误用:`a.remove(-1)` 会试图删除列表中值为 `-1` 的元素,如果不存在这样的值,会引发 `ValueError`。
- 示例:
```python
a = [1, 2, 3]
a.remove(-1) # ValueError,未找到值为 -1 的元素
```
- 这是错误的用法。
3. **C: `del a[-1]`**
- `del` 语句用于删除列表中指定位置的元素,`a[-1]` 指的是列表的最后一个元素。
- 示例:
```python
a = [1, 2, 3]
del a[-1] # 结果是 a = [1, 2]
```
- 这是正确的用法。
4. **D: `a = a[:-1]`**
- 通过切片来舍弃掉最后一个元素,并重新赋值给 `a`。
- 示例:
```python
a = [1, 2, 3]
a = a[:-1] # 结果是 a = [1, 2]
```
- 这是正确的用法。
综上所述,选项 **B: `a.remove(-1)`** 是错误的。正确答案是 B。