鱼C论坛

 找回密码
 立即注册
查看: 441|回复: 20

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

[复制链接]
发表于 2025-10-24 05:41:32 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2025-11-17 12:03:14 | 显示全部楼层
qwerty2200 发表于 2025-11-17 12:02
@FishC count() 方法的时间复杂度是?
A. O(1)
B. O ...


问题: count() 方法的时间复杂度是?  
A. O(1)  
B. O(log n)  
C. O(n)  
D. O(n^2)  

答案: C. O(n)  

解释:  
在大多数编程语言中,count() 方法用于统计某个元素在集合(如列表、字符串)中出现的次数。由于它需要遍历整个集合来计数,因此时间复杂度是 O(n),其中 n 是集合的大小。  

例如,在 Python 中:  
  1.   
  2. my_list = [1, 2, 3, 2, 1]  
  3. result = my_list.count(2)  # 需要遍历列表,时间复杂度 O(n)  
  4. print(result)  # 输出 2  
复制代码


其他选项分析:  
- A. O(1):常数时间,不适用,因为 count() 必须检查每个元素。  
- B. O(log n):对数时间,适用于二分搜索等,但 count() 是线性搜索。  
- D. O(n^2):平方时间,过于低效,不适用于 count() 的典型实现。  

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

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

使用道具 举报

发表于 2025-11-17 12:05:02 | 显示全部楼层
@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-11-17 12:05:39 | 显示全部楼层
qwerty2200 发表于 2025-11-17 12:05
@FishC 下列哪个操作会导致错误?
A. 'hello' = 'H'
...


答案:A

操作 A 'hello'[0] = 'H' 会导致错误,因为字符串在 Python 中是不可变的(immutable),不能通过索引赋值来修改。这会引发 TypeError

其他操作不会导致错误:
- B: ['a', 'b'][0] = 'A' 是有效的,因为列表是可变的(mutable)。
- C: [1, 2, 3][-1] = 30 是有效的,负索引在列表修改中是允许的。
- D: ['x'][0] = ['y', 'z'] 是有效的,因为列表元素可以是任何类型,包括另一个列表。

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

使用道具 举报

发表于 2025-11-17 12:10:07 | 显示全部楼层
@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-11-17 12:11:00 | 显示全部楼层
qwerty2200 发表于 2025-11-17 12:10
@FishC 执行以下代码后,matrix 的值是?

matrix = ...


答案:B. 9

解释:
在 Python 中,列表的 copy() 方法是浅拷贝。当复制嵌套列表时,外部列表被复制,但内部列表仍然是共享的引用。

代码执行过程:
  1. matrix = [[1, 2], [3, 4]]
  2. matrix_copy = matrix.copy()
  3. matrix_copy[0][0] = 9
  4. print(matrix[0][0])
复制代码


- matrix.copy() 创建了一个新列表 matrix_copy,但 matrix_copy[0]matrix[0] 指向同一个内部列表。
- 修改 matrix_copy[0][0] 为 9 时,实际上也修改了 matrix[0][0] 的值。
- 因此,print(matrix[0][0]) 输出 9。

如果您需要完全独立的副本,可以使用 copy.deepcopy()

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

使用道具 举报

发表于 2025-11-21 13:41:51 | 显示全部楼层
@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-11-21 13:42:36 | 显示全部楼层
岁尘 发表于 2025-11-21 13:41
@FishC 执行以下代码后,numbers 的值是?

numbers ...


执行代码后,numbers 的值是 [4, 10, 2, 20],对应选项 A。

解释:
- 列表初始为 [4, 8, 2, 6]。
- 切片 numbers[1::2] 表示从索引 1 开始,步长为 2,因此选取索引 1 和 3 的元素 [8, 6]
- 赋值 [10, 20] 替换了这些位置,所以索引 1 变为 10,索引 3 变为 20,其他元素不变。

因此,结果为 [4, 10, 2, 20]。

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

使用道具 举报

发表于 2025-11-21 13:47:36 | 显示全部楼层
@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-11-21 13:48:05 | 显示全部楼层
岁尘 发表于 2025-11-21 13:47
@FishC 执行以下代码后,idx 的值是?

colors =
...


执行代码后,idx 的值是 3,对应选项 C。

解释:colors.index('blue', 2) 方法从索引 2 开始搜索元素 'blue'。在列表 colors 中,索引 2 是 'green',索引 3 是 'blue',因此返回第一个匹配的索引 3。

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

使用道具 举报

发表于 2025-11-23 20:42:01 | 显示全部楼层
@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-11-23 20:42:44 | 显示全部楼层
汤豆腐 发表于 2025-11-23 20:42
@FishC 执行以下代码后,输出的结果是?

items =
...


执行以下代码后,输出的结果是 A. 'A'。

解释:
- 使用 items[:] 创建了列表 items 的一个浅拷贝,因此 copy_items 是原始列表的独立副本。
- 修改 items[0] 为 'Z' 不会影响 copy_items 的内容。
- 所以,print(copy_items[0]) 输出拷贝时的第一个元素 'A'。

代码:
  1. items = ['A', 'B', 'C', 'D']
  2. copy_items = items[:]
  3. items[0] = 'Z'
  4. print(copy_items[0])
复制代码


输出:'A'

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

使用道具 举报

发表于 2025-12-4 12:18:54 | 显示全部楼层
@FishC 以下哪个操作会修改原列表?
A. sorted(list)
B. list.sort()
C. list + [1, 2]
D. list * 2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-4 12:19:27 | 显示全部楼层
LMo 发表于 2025-12-04 12:18
@FishC 以下哪个操作会修改原列表?
A. sorted(list) ...


会修改原列表的操作是 B. list.sort()

解释:
sorted(list) 返回一个新的排序列表,不会修改原列表。
list.sort() 直接对原列表进行排序,会修改原列表。
list + [1, 2] 是列表拼接,会创建一个新列表,原列表不变。
list * 2 是列表重复,会创建一个新列表,原列表不变。

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

使用道具 举报

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

使用道具 举报

发表于 4 天前 | 显示全部楼层
40岁学编程 发表于 2025-12-08 12:20
@FishC 下列哪种方式不能创建列表的浅拷贝?
A. list ...


下列哪种方式不能创建列表的浅拷贝?  
答案:D. list = 原列表  

解释:  
A. list.copy():列表的 copy 方法会生成一个新的列表,包含原列表元素的引用(浅拷贝)。  
B. list[:]:切片操作会返回一个新列表,实现浅拷贝。  
C. list(原列表):使用 list() 构造函数传入原列表,会创建浅拷贝。  
D. list = 原列表:这只是简单的赋值,让变量指向原列表的引用,并没有创建新列表,因此不是浅拷贝。  

示例:  
  1. 原列表 = [1, 2, [3, 4]]
  2. a = 原列表.copy()   # 浅拷贝
  3. b = 原列表[:]       # 浅拷贝
  4. c = list(原列表)    # 浅拷贝
  5. d = 原列表         # 引用赋值,d 和原列表指向同一个对象

  6. # 修改 d 会影响原列表
  7. d.append(5)
  8. print(原列表)  # 输出 [1, 2, [3, 4], 5]

  9. # 修改 a、b、c 不会影响原列表(但嵌套列表仍共享引用)
  10. a.append(6)
  11. print(原列表)  # 输出 [1, 2, [3, 4], 5],不受影响
复制代码


因此,只有选项 D 不能创建列表的浅拷贝。

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

使用道具 举报

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

使用道具 举报

发表于 4 天前 | 显示全部楼层
40岁学编程 发表于 2025-12-08 12:48
@FishC 以下关于列表方法的说法,哪个是错误的?
A.  ...


选项 D 是错误的。

解释:

  • A. sort() 方法对列表就地排序,返回 None,所以说法正确。
  • B. reverse() 方法就地反转列表,修改原列表,返回 None,所以说法正确。
  • C. index() 方法可以指定 startstop 参数来限定搜索范围,所以说法正确。
  • D. count() 方法在元素不存在时返回 0,不会抛出异常,所以说法错误。


示例代码:


  1. # 验证每个选项
  2. my_list = [1, 2, 3, 2]

  3. # A. sort() 返回 None
  4. result = my_list.sort()
  5. print("sort() 返回值:", result)  # 输出 None

  6. # B. reverse() 修改原列表
  7. my_list.reverse()
  8. print("reverse() 后的列表:", my_list)  # 列表被反转

  9. # C. index() 指定搜索范围
  10. index = my_list.index(2, 1, 3)  # 在索引1到3之间搜索元素2
  11. print("index(2, 1, 3) 结果:", index)  # 输出相应索引

  12. # D. count() 不会抛出异常
  13. count = my_list.count(5)  # 元素5不存在于列表中
  14. print("count(5) 结果:", count)  # 输出 0,没有异常
复制代码


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

使用道具 举报

发表于 4 天前 | 显示全部楼层
@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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 11:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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