鱼C论坛

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

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

[复制链接]
发表于 2025-12-16 18:58:53 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
LZzz_Snail 发表于 2025-12-16 18:57
@FishC 下列哪种方式不能创建列表的浅拷贝?
A. list ...


选项 D list = 原列表 不能创建列表的浅拷贝。

解释:
- 选项 A:list.copy() 是列表的浅拷贝方法。
- 选项 B:list[:] 切片操作会创建浅拷贝。
- 选项 C:list(原列表) 使用 list() 函数会创建浅拷贝。
- 选项 D:list = 原列表 只是赋值,使两个变量引用同一个列表对象,没有创建新列表,因此不是拷贝。

示例代码:

  1. original = [1, 2, [3, 4]]
  2. a = original.copy()  # 浅拷贝
  3. b = original[:]      # 浅拷贝
  4. c = list(original)   # 浅拷贝
  5. d = original         # 不是拷贝,是同一个对象

  6. original[0] = 99
  7. print("original:", original)  # 输出: [99, 2, [3, 4]]
  8. print("a:", a)  # 输出: [1, 2, [3, 4]],不变
  9. print("b:", b)  # 输出: [1, 2, [3, 4]],不变
  10. print("c:", c)  # 输出: [1, 2, [3, 4]],不变
  11. print("d:", d)  # 输出: [99, 2, [3, 4]],随 original 改变
复制代码


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

使用道具 举报

发表于 2025-12-16 19:00:00 | 显示全部楼层
@FishC 执行以下代码,result 的值是多少?

nums = [5, 3, 8, 3, 1]
nums[nums.index(3):nums.index(3)+2] = [7, 7, 7]
result = len(nums)

A. 5
B. 6
C. 7
D. 8
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 19:00:59 | 显示全部楼层
2025-12-16_190043.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-16 19:01:36 | 显示全部楼层
LZzz_Snail 发表于 2025-12-16 19:00
@FishC 执行以下代码,result 的值是多少?

nums = ...


执行代码后,result 的值为 6,因此正确答案是 B。

解释:
- 初始列表:nums = [5, 3, 8, 3, 1]
- nums.index(3) 返回 1(第一个 3 的索引)
- 切片 nums[1:3] 对应 [3, 8]
- 将此切片替换为 [7, 7, 7],列表变为 [5, 7, 7, 7, 3, 1]
- 因此 len(nums) 为 6,所以 result = 6

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

使用道具 举报

发表于 2025-12-18 16:12:18 | 显示全部楼层
@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-18 16:12:45 | 显示全部楼层
dongqing1 发表于 2025-12-18 16:12
@FishC 执行以下代码后,idx 的值是?

colors =
...


根据代码分析:

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


list.index() 方法从指定起始索引开始搜索元素。这里从索引 2 开始搜索 'blue'
- 索引 2:'green'(不匹配)
- 索引 3:'blue'(匹配)

因此返回索引 3,idx 的值为 3。

正确答案是 C. 3。

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

使用道具 举报

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

@FishC 执行以下代码后,result 的值是?

data = [7, 2, 9, 2, 5, 2, 8]
result = data.count(2)

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

使用道具 举报

发表于 2026-1-13 16:08:17 | 显示全部楼层
火柴人618 发表于 2026-01-13 16:07
qwerty2200 发表于 2025-11-17 12:02
@FishC count() ...

qwerty2200 发表于 2025-11-17 12:02


针对您的问题:

问题1:count() 方法的时间复杂度
在 Python 中,列表的 count() 方法需要遍历整个列表,因此时间复杂度为 O(n),其中 n 是列表长度。您提供的选项 A. O(1) 和 B. O(log n) 均不正确。

问题2:执行代码后 result 的值
代码:

  1. data = [7, 2, 9, 2, 5, 2, 8]
  2. result = data.count(2)
复制代码

列表 data 中包含三个元素 2,所以 result 的值为 3,对应选项 C。

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

使用道具 举报

发表于 2026-1-13 16:08:49 | 显示全部楼层
火柴人618 发表于 2026-01-13 16:07
qwerty2200 发表于 2025-11-17 12:02
@FishC count() ...


对于第一个问题,Python 列表的 count() 方法需要遍历整个列表来统计元素出现的次数,因此时间复杂度为 O(n)。但提供的选项中没有 O(n),所以 A 和 B 都不正确。在选择题中,如果必须从给定选项选择,可能意图是考察基础,但这里建议记住实际复杂度为 O(n)。

对于第二个问题,代码
  1. data.count(2)
复制代码
会统计数字 2 在列表中出现的次数。列表 [7, 2, 9, 2, 5, 2, 8] 中,2 出现了 3 次,因此 result 的值为 3,对应选项 C。

答案总结:
- 时间复杂度:实际为 O(n),但选项不完整。
- result 的值:C. 3

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

使用道具 举报

发表于 2026-2-13 14:47: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
回复 支持 反对

使用道具 举报

发表于 2026-2-13 14:47:42 | 显示全部楼层
变西瓜 发表于 2026-02-13 14:47
@FishC 执行以下代码后,matrix 的值是?

matrix = ...


答案:B.9

解释:
当使用 matrix.copy() 时,它执行的是浅拷贝。这意味着虽然 matrix_copy 是一个新列表,但其内部的子列表仍然是原 matrix 中子列表的引用。因此,修改 matrix_copy[0][0] 实际上也会影响到 matrix[0][0]

代码示例:

  1. matrix = [[1, 2], [3, 4]]
  2. matrix_copy = matrix.copy()
  3. matrix_copy[0][0] = 9
  4. print(matrix[0][0])  # 输出 9
复制代码


所以,执行后 matrix[0][0] 的值为 9。

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

使用道具 举报

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

使用道具 举报

发表于 7 天前 | 显示全部楼层
爱吹的牛 发表于 2026-02-21 19:42
@FishC 下列哪个操作会导致错误?
A. 'hello' = 'H'
...


在 Python 中,字符串是不可变类型,因此不能通过索引直接修改字符串中的字符。而列表是可变类型,允许通过索引修改元素。

  • 选项 A:'hello'[0] = 'H' 试图修改字符串的第一个字符,会导致 TypeError
  • 选项 B、C、D 都是对列表进行索引赋值,这是允许的操作。


因此,正确答案是 A

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

使用道具 举报

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

使用道具 举报

发表于 7 天前 | 显示全部楼层
爱吹的牛 发表于 2026-02-21 19:43
@FishC count() 方法的时间复杂度是?
A. O(1)
B. O ...


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

简单解释:
Python 的 count() 方法(用于列表、字符串等序列)需要遍历整个序列来统计目标元素出现的次数。因此,它的时间复杂度与序列长度 n 成正比。

例子:

  1. my_list = [1, 2, 3, 2, 2, 4]
  2. # 下面这行代码会逐一检查 my_list 中的每个元素是否为 2
  3. count_of_twos = my_list.count(2)
  4. print(count_of_twos) # 输出:3
复制代码


其他选项分析:
*   A. O(1):错误,因为它不是直接通过索引或哈希获取结果,必须遍历。
*   B. O(log n):错误,这通常是二分查找等算法的复杂度,不适用于线性扫描。
*   D. O(n^2):错误,这通常是嵌套循环的复杂度,count() 只进行单层遍历。

所以,在使用 count() 时,如果序列很长或需要频繁调用,需要考虑其性能影响。

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

使用道具 举报

发表于 7 天前 | 显示全部楼层
@FishC 执行以下代码后,fruits 列表的内容是?

fruits = ['apple', 'banana', 'orange', 'grape']
fruits[1:3] = ['kiwi']

A. ['apple', 'kiwi', 'grape']
B. ['apple', 'kiwi', 'orange', 'grape']
C. ['apple', 'banana', 'kiwi', 'grape']
D. ['kiwi']
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
爱吹的牛 发表于 2026-02-21 19:44
@FishC 执行以下代码后,fruits 列表的内容是?

fr ...


首先,我们来分析代码:

初始列表 fruits 包含四个元素:


  1. fruits = ['apple', 'banana', 'orange', 'grape']
复制代码


切片 fruits[1:3] 表示从索引 1 到索引 3(不包括索引 3),即元素 'banana''orange'

执行赋值 fruits[1:3] = ['kiwi'],这意味着用列表 ['kiwi'] 替换切片部分。由于切片有两个元素,而赋值列表只有一个元素,因此列表会调整大小:移除两个旧元素,插入一个新元素。

具体过程:
- 移除索引 1 和 2 的元素('banana' 和 'orange')。
- 在索引 1 处插入 'kiwi'。

结果列表变为:['apple', 'kiwi', 'grape']

因此,正确答案是选项 A。


  1. ['apple', 'kiwi', 'grape']
复制代码


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

使用道具 举报

发表于 7 天前 | 显示全部楼层
@FishC 执行以下代码,result 的值是多少?

nums = [5, 3, 8, 3, 1]
nums[nums.index(3):nums.index(3)+2] = [7, 7, 7]
result = len(nums)

A. 5
B. 6
C. 7
D. 8
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
爱吹的牛 发表于 2026-02-21 19:45
@FishC 执行以下代码,result 的值是多少?

nums = ...


让我们逐步分析代码:

  1. nums = [5, 3, 8, 3, 1]
复制代码


nums.index(3) 返回第一个 3 的索引,即 1(索引从 0 开始)。  
因此,切片 nums[1:1+2] 也就是 nums[1:3],对应原列表中的元素 [3, 8]。

执行赋值 nums[1:3] = [7, 7, 7],这将原切片替换为三个元素 7。  
列表从 [5, 3, 8, 3, 1] 变为 [5, 7, 7, 7, 3, 1]。

列表长度变为 6,所以 result = len(nums) 的值为 6。

因此,正确答案是 B.6

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

使用道具 举报

发表于 6 天前 | 显示全部楼层
@FishC 执行以下代码后,idx 的值是?

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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