鱼C论坛

 找回密码
 立即注册
查看: 2808|回复: 5

c[a[i]]怎么理解?

[复制链接]
发表于 2023-2-21 23:01:50 | 显示全部楼层 |阅读模式

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

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

x
a = [1,2,3]
c = [0]*5
n = len(a)

for i in range(n):
        print(c[a[i]])

问:最后执行结果怎么看?特别是c[a[i]]的理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-21 23:12:35 | 显示全部楼层
>>> c = [0]*5
>>> c
[0, 0, 0, 0, 0]

i 代入数字,走下流程啊

c[  a[i=0]  ] = c[ 1 ] =0
c[  a[i=1]  ]  =c[ 0 ] = 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-22 08:53:09 | 显示全部楼层
这段代码的执行结果将会打印出 c 列表中索引为 1、2、3 的元素的值,因为 a 列表中的元素为 1、2、3,而 c 列表中所有元素都初始化为 0。

在循环中,对于每个索引 i,a[i] 的值会被用作 c 列表的索引。由于 a 列表中的元素是 1、2、3,因此在第一次循环中,c[a[i]] 将等于 c[1],这将打印出 c 列表中索引为 1 的元素的值(即 0)。在第二次循环中,c[a[i]] 将等于 c[2],这将打印出 c 列表中索引为 2 的元素的值(即 0)。最后一次循环也是同样的情况,将打印 c 列表中索引为 3 的元素的值(即 0)。

值得注意的是,c[a[i]] 的值只是打印出来并没有被修改,所以 c 列表仍然包含原始的 0 值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-23 06:42:26 | 显示全部楼层
本帖最后由 triell 于 2023-2-23 06:44 编辑
ouyunfu 发表于 2023-2-22 08:53
这段代码的执行结果将会打印出 c 列表中索引为 1、2、3 的元素的值,因为 a 列表中的元素为 1、2、3,而 c  ...


如果是嵌套加叠加的呢
比如:
a = [2,2]
b = [2,2]
c = [0] * 5
n = len(n)

for i in range(1,n+1):
    c[ a[ i ] ] += b[ i ]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-23 09:05:22 | 显示全部楼层
triell 发表于 2023-2-23 06:42
如果是嵌套加叠加的呢
比如:
a = [2,2]

这可以更好地理解为一个向量加法操作,其中向量a表示要加到c向量上的位置,向量b表示要加到c向量上的值。具体地,向量a和b都可以看作是长度为n的向量,因此向量加法操作可以写成:

c[a[i]] += b[i]

这个操作将b[i]添加到c[a[i]],也就是将b[i]添加到c向量的第a[i]个元素上。

如果a和b是嵌套的列表,那么可以将它们展开成向量形式,然后进行相同的向量加法操作。例如,如果a和b是长度为m的列表,其中每个元素都是长度为n的列表,那么可以将它们展开为长度为mn的向量,然后进行相同的向量加法操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-11 16:49:33 | 显示全部楼层
这段代码定义了一个列表 a,其中包含了三个整数 1、2、3,以及一个长度为 5 的列表 c,其中每个元素都初始化为 0。

然后使用一个 for 循环,枚举列表 a 中的所有元素。在循环的每一次迭代中,取出列表 a 当中的当前元素 a[i],然后用它作为下标来访问列表 c,即 c[a[i]]。

这个操作的含义是:将列表 c 中下标为 a[i] 的元素的值打印出来。由于列表 c 当中所有元素都初始化为 0,因此无论 a[i] 的值是多少,c[a[i]] 都将返回 0。

因此,最后执行结果将会输出三个 0,即:

0
0
0
这是因为列表 a 当中有三个元素,对应的下标分别为 0、1、2,所以循环的每一次迭代中都会访问 c 列表中的 0 号元素。

需要注意的是,如果 a[i] 的值大于等于列表 c 的长度 5,代码将会抛出 IndexError 异常,因为访问了一个不存在的元素。因此,在实际使用中,需要确保 a 列表中的元素都在 c 列表的下标范围内,或者在访问 c 列表元素之前先进行下标范围的检查。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 01:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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