鱼C论坛

 找回密码
 立即注册
查看: 239|回复: 6

[快问快答] 第024讲:列表(VI)

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

使用道具 举报

发表于 2025-12-8 21:04:50 | 显示全部楼层
@FishC 以下关于列表推导式生成结果的说法,哪一项是正确的?
A. 会在原列表上原地修改元素
B. 始终返回一个新列表对象
C. 只能返回生成器对象
D. 必须与原列表长度保持一致
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-8 21:05:14 | 显示全部楼层
寒虫 发表于 2025-12-08 21:04
@FishC 以下关于列表推导式生成结果的说法,哪一项是 ...


正确答案是 B。

详细解析:

  • A 错误:列表推导式不会修改原列表,而是会创建一个全新的列表。
  • [b]B 正确:列表推导式(使用方括号 [ ] )的最终结果总是返回一个新的列表对象。
  • C 错误:列表推导式返回的是列表,而不是生成器对象。使用圆括号 ( ) 的才是生成器表达式。
  • D 错误:列表推导式允许使用 if 条件进行过滤,因此新列表的长度可以和原列表(如果有原列表的话)不同。


代码示例:

  1. # 原列表
  2. original_list = [1, 2, 3, 4, 5]

  3. # 列表推导式:生成新列表,元素为原列表每个元素的平方
  4. new_list = [x ** 2 for x in original_list]

  5. print("原列表:", original_list, ", id为:", id(original_list))
  6. print("新列表:", new_list, ", id为:", id(new_list))
  7. # 两个列表的内容和内存地址都不同

  8. # 示例D错误:列表推导式可以改变长度
  9. filtered_list = [x for x in original_list if x % 2 == 0]
  10. print("过滤后的列表(长度变化):", filtered_list)
复制代码


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

使用道具 举报

发表于 2025-12-17 14:10:34 | 显示全部楼层
@FishC 下列哪个选项能生成包含 10 个 True 的列表?
A. [True for i in range(10)]
B. [true for i in range(10)]
C. [TRUE for i in range(10)]
D. ["True" for i in range(10)]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-17 14:11:10 | 显示全部楼层
LZzz_Snail 发表于 2025-12-17 14:10
@FishC 下列哪个选项能生成包含 10 个 True 的列表?
...


首先,D 选项 D. ["True" for i in range(10)] 是不正确的,因为它生成的是包含 10 个字符串 "True" 的列表,而不是布尔值 True

要生成包含 10 个布尔值 True 的列表,正确的方法是:

使用乘法:
  1. my_list = [True] * 10
复制代码


或者使用列表推导式:
  1. my_list = [True for _ in range(10)]
复制代码


这两种方法都会创建如下的列表:[True, True, True, True, True, True, True, True, True, True]

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

使用道具 举报

发表于 2025-12-17 14:11:31 | 显示全部楼层
@FishC 下列代码执行后,result 的值是?

data = [[1, 2], [3, 4], [5, 6]]
result = [sum(row) for row in data]

A. [1, 2, 3, 4, 5, 6]
B. [3, 7, 11]
C. [6, 15]
D. [21]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-17 14:11:49 | 显示全部楼层
LZzz_Snail 发表于 2025-12-17 14:11
@FishC 下列代码执行后,result 的值是?

data = [ ...


result 的值是 [3, 7, 11],对应选项 B。

解释:
代码中的列表推导式 [sum(row) for row in data] 会遍历 data 中的每个子列表,并计算每个子列表的和:
- [1, 2] 的和为 3
- [3, 4] 的和为 7
- [5, 6] 的和为 11
因此,result 的值为 [3, 7, 11]。

代码示例:
  1. data = [[1, 2], [3, 4], [5, 6]]
  2. result = [sum(row) for row in data]
  3. print(result)  # 输出 [3, 7, 11]
复制代码


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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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