鱼C论坛

 找回密码
 立即注册
查看: 1462|回复: 9

[已解决]用自己的语言解释一下25课的几行代码,大家看下对不对

[复制链接]
发表于 2024-7-25 16:42:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

大家好, 在学第25课,刚好有点想法,分享出来看一下大家的看法。

代码如下:
oho=[1,2,3,4,5]
for i in range(len(oho)):
    oho=oho*2

   
oho
[2, 4, 6, 8, 10]
oho=[1,2,3,4,5]
oho=[i*2 for i in oho]

oho
[2, 4, 6, 8, 10]

我自己的解释如下:
赋值oho等于[1,2,3,4,5]
把oho里面的数值单独列出来
    列表oho等于单独列出的数值乘以2后组成的列表

执行oho
得到结果 [2, 4, 6, 8, 10]
赋值oho等于[1,2,3,4,5]
oho列表里面的每一个数值乘以2


执行oho
得到结果 [2, 4, 6, 8, 10]

最佳答案
2024-7-25 17:18:35
William01 发表于 2024-7-25 17:07
你的解释看起来比我的要详细一些,但是我看不大懂。我本来还想拆解一下“for i in range(len(oho)):”,  ...

看来我的表述有些难理解
  1. oho=[1,2,3,4,5]
  2. for i in range(len(oho)):
  3.     oho=oho*2
复制代码

这段代码如果把 for 循环改成重复的语句,是这样的:
  1. oho=[1,2,3,4,5]
  2. oho=oho*2
  3. oho=oho*2
  4. oho=oho*2
  5. oho=oho*2
  6. oho=oho*2
复制代码

它只能延长列表,使列表不断重复,不能把列表 oho 变成 [2, 4, 6, 8, 10]
  1. oho=[1,2,3,4,5]
  2. for i in range(len(oho)):
  3.     oho[i] = oho[i] * 2
复制代码

这样就可以把列表 oho 变成 [2, 4, 6, 8, 10] 了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-7-25 16:59:28 | 显示全部楼层
有一点问题
  1. oho=[1,2,3,4,5]
  2. for i in range(len(oho)):
  3.     oho=oho*2
复制代码

就是对 oho * 2,乘 5 次。等价于 oho = oho * (2 ** len(oho))
赋值 oho 等于 [1,2,3,4,5]
重复执行[ oho 最开始的长度]次:
    列表 oho 等于最新的列表乘以 2 后组成的列表

下面是运行的结果:
  1. >>> oho
  2. [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-25 16:59:44 | 显示全部楼层
是对的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-25 17:02:44 | 显示全部楼层
2# 是对的。第三行应该改为:oho[i] = oho[i] * 2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-25 17:07:22 | 显示全部楼层
smallwh 发表于 2024-7-25 16:59
有一点问题

就是对 oho * 2,乘 5 次。等价于 oho = oho * (2 ** len(oho))

你的解释看起来比我的要详细一些,但是我看不大懂。我本来还想拆解一下“for i in range(len(oho)):”, 然后归纳总结一下。但是发现以自己目前的水平,无法组织有效可读的文字,所以就直接归纳总结了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-25 17:08:05 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-25 17:17:07 | 显示全部楼层
tommyyu 发表于 2024-7-25 17:02
2# 是对的。第三行应该改为:oho = oho * 2

谢谢您的回复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-25 17:18:35 | 显示全部楼层    本楼为最佳答案   
William01 发表于 2024-7-25 17:07
你的解释看起来比我的要详细一些,但是我看不大懂。我本来还想拆解一下“for i in range(len(oho)):”,  ...

看来我的表述有些难理解
  1. oho=[1,2,3,4,5]
  2. for i in range(len(oho)):
  3.     oho=oho*2
复制代码

这段代码如果把 for 循环改成重复的语句,是这样的:
  1. oho=[1,2,3,4,5]
  2. oho=oho*2
  3. oho=oho*2
  4. oho=oho*2
  5. oho=oho*2
  6. oho=oho*2
复制代码

它只能延长列表,使列表不断重复,不能把列表 oho 变成 [2, 4, 6, 8, 10]
  1. oho=[1,2,3,4,5]
  2. for i in range(len(oho)):
  3.     oho[i] = oho[i] * 2
复制代码

这样就可以把列表 oho 变成 [2, 4, 6, 8, 10] 了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-25 18:02:24 | 显示全部楼层
确实,oho是一个列表而不是它里面的元素,oho=oho*2只是对整个列表进行操作,而没有对单独的元素进行变换。

如果要修改单独的元素,要用下标指名列表的哪一个元素,即oho[i],然后再操作,oho[i] = oho[i]*2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-25 22:22:23 | 显示全部楼层
smallwh 发表于 2024-7-25 17:18
看来我的表述有些难理解

这段代码如果把 for 循环改成重复的语句,是这样的:

我还是不大懂。不过我觉得这是我个人的问题,毕竟刚开始学没多久,需要多看多思考,慢慢应该就会明白了。谢谢您的认真回复。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-19 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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