鱼C论坛

 找回密码
 立即注册
查看: 137|回复: 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)):”,  ...

看来我的表述有些难理解
oho=[1,2,3,4,5]
for i in range(len(oho)):
    oho=oho*2
这段代码如果把 for 循环改成重复的语句,是这样的:
oho=[1,2,3,4,5]
oho=oho*2
oho=oho*2
oho=oho*2
oho=oho*2
oho=oho*2
它只能延长列表,使列表不断重复,不能把列表 oho 变成 [2, 4, 6, 8, 10]
oho=[1,2,3,4,5]
for i in range(len(oho)):
    oho[i] = oho[i] * 2
这样就可以把列表 oho 变成 [2, 4, 6, 8, 10] 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-25 16:59:28 | 显示全部楼层
有一点问题
oho=[1,2,3,4,5]
for i in range(len(oho)):
    oho=oho*2
就是对 oho * 2,乘 5 次。等价于 oho = oho * (2 ** len(oho))
赋值 oho 等于 [1,2,3,4,5]
重复执行[ oho 最开始的长度]次:
    列表 oho 等于最新的列表乘以 2 后组成的列表

下面是运行的结果:
>>> oho
[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]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-25 16:59:44 | 显示全部楼层
是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-25 17:02:44 | 显示全部楼层
2# 是对的。第三行应该改为:oho[i] = oho[i] * 2
想知道小甲鱼最近在做啥?请访问 -> 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)):”, 然后归纳总结一下。但是发现以自己目前的水平,无法组织有效可读的文字,所以就直接归纳总结了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-25 17:08:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢您的回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

看来我的表述有些难理解
oho=[1,2,3,4,5]
for i in range(len(oho)):
    oho=oho*2
这段代码如果把 for 循环改成重复的语句,是这样的:
oho=[1,2,3,4,5]
oho=oho*2
oho=oho*2
oho=oho*2
oho=oho*2
oho=oho*2
它只能延长列表,使列表不断重复,不能把列表 oho 变成 [2, 4, 6, 8, 10]
oho=[1,2,3,4,5]
for i in range(len(oho)):
    oho[i] = oho[i] * 2
这样就可以把列表 oho 变成 [2, 4, 6, 8, 10] 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

如果要修改单独的元素,要用下标指名列表的哪一个元素,即oho[i],然后再操作,oho[i] = oho[i]*2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

我还是不大懂。不过我觉得这是我个人的问题,毕竟刚开始学没多久,需要多看多思考,慢慢应该就会明白了。谢谢您的认真回复。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-8 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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