鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[快问快答] 第021讲:列表(III)

[复制链接]
发表于 2025-12-8 13:38:31 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
40岁学编程 发表于 2025-12-08 13:38
@FishC 执行以下代码后,matrix 的值是?

matrix = ...


执行上述代码后,打印的结果是 9,因此选择 B

解释:
  1. matrix.copy()
复制代码
是浅拷贝,新列表中的子列表与原始列表中的子列表是同一个对象,所以修改 matrix_copy[0][0] 也会影响 matrix[0][0]

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-12 16:49:17 | 显示全部楼层
@FishC 执行以下代码后,idx 的值是?

colors = ['red', 'blue', 'green', 'blue', 'yellow']
idx = colors.index('blue', 2)

A. 1
B. 2
C. 3
D. ValueError 异常
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-12 16:49:50 | 显示全部楼层
张雪迪 发表于 2025-12-12 16:49
@FishC 执行以下代码后,idx 的值是?

colors =
...


执行代码后,idx 的值为 3,因此正确答案是 C。

解释:
列表 colors 的内容为:['red', 'blue', 'green', 'blue', 'yellow']。
  1. colors.index('blue', 2)
复制代码
表示从索引 2 开始搜索元素 'blue'。索引 2 对应的元素是 'green',不匹配;继续搜索索引 3,元素是 'blue',匹配成功,因此返回索引 3。所以 idx 的值为 3。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-14 21:15:38 | 显示全部楼层
@FishC 执行以下代码,会输出什么?

lst = [3, 1, 4, 1, 5]
print(lst.index(1, lst.index(1) + 1))

A. 0
B. 1
C. 2
D. 3
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-14 21:16:05 | 显示全部楼层
变西瓜 发表于 2025-12-14 21:15
@FishC 执行以下代码,会输出什么?

lst =
print ...


执行代码会输出 D.3

解析:
1. lst.index(1) 返回第一个 1 的索引,即 1
2. lst.index(1) + 1 的结果为 2
3. lst.index(1, 2) 表示从索引 2 开始搜索 1,找到的下一个 1 在索引 3
4. 因此输出 3

代码验证:
  1. lst = [3, 1, 4, 1, 5]
  2. print(lst.index(1, lst.index(1) + 1))
复制代码

输出结果为:
  1. 3
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:47:52 | 显示全部楼层
@FishC 以下关于列表方法的说法,哪个是错误的?
A. sort() 方法返回 None
B. reverse() 方法修改原列表
C. index() 可以指定搜索范围
D. count() 方法会抛出异常如果元素不存在
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:48:25 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:47
@FishC 以下关于列表方法的说法,哪个是错误的?
A.  ...


选项 D 是错误的。

解释:
- A 正确:`sort()` 方法对列表进行原地排序,返回 `None`。
- B 正确:`reverse()` 方法原地反转列表,修改原列表。
- C 正确:`index()` 方法可以接受 `start` 和 `end` 参数来指定搜索范围。
- D 错误:`count()` 方法返回元素在列表中出现的次数,如果元素不存在,返回 0,不会抛出异常。

示例:
  1. my_list = [1, 2, 2, 3]
  2. print(my_list.count(2))  # 输出 2
  3. print(my_list.count(4))  # 输出 0,没有异常
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:48:26 | 显示全部楼层
@FishC 执行以下代码后,输出的结果是?

items = ['A', 'B', 'C', 'D']
copy_items = items[:]
items[0] = 'Z'
print(copy_items[0])

A. 'A'
B. 'Z'
C. Error
D. None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:48:53 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:48
@FishC 执行以下代码后,输出的结果是?

items =
...


执行以上代码后,输出结果是:A

解释:使用切片 items[:] 会创建原列表的一个完整副本,该副本与原列表相互独立。因此,修改原列表 items 中的元素不会影响副本 copy_items,所以 copy_items[0] 仍然是初始值 'A'

故正确答案为 A. 'A'。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:49:30 | 显示全部楼层
@FishC 执行以下代码后,idx 的值是?

colors = ['red', 'blue', 'green', 'blue', 'yellow']
idx = colors.index('blue', 2)

A. 1
B. 2
C. 3
D. ValueError 异常
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:49:49 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:49
@FishC 执行以下代码后,idx 的值是?

colors =
...


代码执行后,idx 的值为 3。

解释:
- colors.index('blue', 2) 表示从索引 2(包含)开始查找第一个出现的 'blue'。
- 列表 colors 中,索引 2 是 'green',索引 3 是 'blue',因此找到的索引为 3。

所以正确答案是 C。


  1. colors = ['red', 'blue', 'green', 'blue', 'yellow']
  2. idx = colors.index('blue', 2)  # idx 的值为 3
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:51:50 | 显示全部楼层
@FishC 下列哪个操作会导致错误?
A. 'hello'[0] = 'H'
B. ['a', 'b'][0] = 'A'
C. [1, 2, 3][-1] = 30
D. ['x'][0] = ['y', 'z']
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:52:14 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:51
@FishC 下列哪个操作会导致错误?
A. 'hello' = 'H'
...


正确答案是 A。

原因解释:

- 字符串在 Python 中是不可变类型,因此尝试通过索引直接修改字符串中的字符会引发 TypeError 错误。
- 列表是可变类型,支持通过索引赋值来修改元素,因此选项 B、C、D 的操作都是有效的。

错误示例(选项 A):
  1. >>> 'hello'[0] = 'H'
  2. Traceback (most recent call last):
  3.   File "<stdin>", line 1, in <module>
  4. TypeError: 'str' object does not support item assignment
复制代码


正确示例(选项 B、C、D):
  1. >>> ['a', 'b'][0] = 'A'  # 列表元素被修改为 ['A', 'b']
  2. >>> [1, 2, 3][-1] = 30   # 列表变为 [1, 2, 30]
  3. >>> ['x'][0] = ['y', 'z'] # 列表变为 [['y', 'z']]
复制代码


因此,只有选项 A 会导致错误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:52:44 | 显示全部楼层
@FishC 执行以下代码后,matrix 的值是?

matrix = [[1, 2], [3, 4]]
matrix_copy = matrix.copy()
matrix_copy[0][0] = 9
print(matrix[0][0])

A. 1
B. 9
C. [1, 2]
D. [9, 2]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:53:14 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:52
@FishC 执行以下代码后,matrix 的值是?

matrix = ...


在 Python 中,使用 list.copy() 方法进行的是浅拷贝,这意味着只复制了最外层的列表,而内部嵌套的列表仍然是引用(即共享同一对象)。

执行以下步骤:

  1. matrix = [[1, 2], [3, 4]]
  2. matrix_copy = matrix.copy()  # 浅拷贝,matrix_copy[0] 和 matrix[0] 指向同一个列表
  3. matrix_copy[0][0] = 9        # 修改共享列表的第一个元素
  4. print(matrix[0][0])          # 因此 matrix[0][0] 也变为 9
复制代码


因此,matrix[0][0] 的值是 9。

答案:B. 9

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:53:25 | 显示全部楼层
@FishC 执行以下代码后,numbers 的值是?

numbers = [4, 8, 2, 6]
numbers[1::2] = [10, 20]

A. [4, 10, 2, 20]
B. [4, 10, 20, 6]
C. [10, 8, 20, 6]
D. [4, 8, 10, 20]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:53:48 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:53
@FishC 执行以下代码后,numbers 的值是?

numbers ...


执行代码后,numbers 的值是 A. [4, 10, 2, 20]

解释如下:

numbers[1::2] 表示从索引 1 开始,步长为 2 的切片。对于列表 [4, 8, 2, 6],该切片选取索引 1 和 3 的元素,即 [8, 6]。然后通过赋值语句 numbers[1::2] = [10, 20],将切片替换为新列表 [10, 20]。因此,原列表中索引 1 的元素变为 10,索引 3 的元素变为 20,其他元素不变。最终列表为 [4, 10, 2, 20]

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:55:02 | 显示全部楼层
@FishC count() 方法的时间复杂度是?
A. O(1)
B. O(log n)
C. O(n)
D. O(n&#178;)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:55:28 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 18:55
@FishC count() 方法的时间复杂度是?
A. O(1)
B. O ...

@FishC count() 方法的时间复杂度是?
A. O(1)
B. O(log n)
C. O(n)
D. O(n&#178;)


正确答案是 C. O(n)。

count() 方法通常用于序列(如列表、字符串等),它会遍历整个序列来统计特定元素出现的次数。因此,时间复杂度与序列长度 n 成正比,即 O(n)。

例如,在 Python 中:

  1. my_list = [1, 2, 3, 2, 1]
  2. count = my_list.count(2)  # 需要遍历列表所有元素,时间复杂度为 O(n)
复制代码


其他选项的解释:
- A. O(1):常数时间复杂度,不适用于需要遍历的操作。
- B. O(log n):对数时间复杂度,常见于二分查找等,但 count() 需要全遍历。
- D. O(n^2):平方时间复杂度,比 O(n) 更慢,不适合 count()。

所以,对于大多数实现,count() 的时间复杂度是 O(n)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 18:57:50 | 显示全部楼层
@FishC 下列哪种方式不能创建列表的浅拷贝?
A. list.copy()
B. list[:]
C. list(原列表)
D. list = 原列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-9 06:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表