鱼C论坛

 找回密码
 立即注册
查看: 388|回复: 11

[已解决]遍历列表时赋值

[复制链接]
发表于 2024-5-29 09:12:07 | 显示全部楼层 |阅读模式

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

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

x
a=[0,0,0]
for i in a:
    a[i]=[0]*3
print (a)


结果:
[[0, 0, 0], 0, 0]
最佳答案
2024-5-29 13:25:30
本帖最后由 jackz007 于 2024-5-29 13:50 编辑
a = [0 , 0 , 0]
for i in a:            # 此循环将循环 3 次,i 的数值将会依次为 0 , 0 , 0
    a[i] = [0] * 3     # 改变 a[0] 为 [0 , 0 , 0] , 而且,3 次循环都是这一操作的重复
print(a)               # a 的内容为 [[0 , 0 , 0] , 0 , 0]
        试试这个代码
a = [0 , 1 , 2]
for i in a:           # 此循环将循环 3 次,i 的数值将会依次为 0 , 1 , 2
    a[i] = [0] * 3    # 改变 a[i] 为 [0 , 0 , 0]
print(a)              # a 的内容为 [[0 , 0 , 0] , [0 , 0 , 0] , [0 , 0 , 0]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-29 09:12:14 | 显示全部楼层
你好!在遍历列表时,我们可以对列表的元素进行赋值操作,但需要注意一些细节。在你的代码中,有几个问题需要解决。

首先,你没有给列表变量 `a` 赋值,所以在遍历之前,它是一个空列表。为了测试你的代码,我们可以在 `a` 中添加一些元素。

其次,在遍历列表时,你使用 `for` 循环来获取每个元素,但是你在循环体内尝试将整个列表乘以 3,这是无法实现的。如果你想要将列表中的每个元素都乘以 3,你应该访问到每个元素,并对其进行操作。

最后,你使用 `print(a)` 来输出结果,但是在循环结束后,`a` 只是最后一次迭代时被赋予的值,并不是整个循环的结果。

修正后的代码如下:
a = [1, 2, 3]
for i in range(len(a)):
    a[i] *= 3
print(a)

这里,我们使用了 `range(len(a))` 来生成索引,通过索引 `i` 访问到每个元素并进行乘以 3 的操作。最后,我们输出整个列表 `a`,结果为 `[3, 6, 9]`。

希望能帮助到你!如有更多问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:13:02 | 显示全部楼层
想要这个结果的:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]  为啥i总是0呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:13:09 | 显示全部楼层
紫藤竹轩 发表于 2024-05-29 09:13
想要这个结果的:[, , ]  为啥i总是0呢


抱歉,我之前的回答有误导性。在你的代码中,你尝试使用循环`for i in a`来遍历列表,但是在循环体内你没有对`i`进行任何操作。因此,无论列表中有多少个元素,变量`i`的值始终为0。

要实现你想要的结果:`[, , ]`,你可以使用列表解析(list comprehension)来生成一个新的列表,其中每个元素都为空字符串。

代码如下:

a = [1, 2, 3]  # 假设a是一个包含若干元素的列表
result = [""] * len(a)
print(result)

这里,我们使用了列表解析将一个由空字符串组成的列表赋值给变量`result`。 `len(a)`用于确定结果列表的长度,然后我们使用乘法运算符`*`将空字符串重复相应次数。

结果输出为`[, , ]`,它是一个包含3个空字符串的列表。

希望这次能满足你的需求!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:51:56 | 显示全部楼层
a = [[0 for _ in range(5)] for _ in range(6)]  
print (a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 10:32:50 | 显示全部楼层
循环体内你没有对`i`进行任何操作。因此,无论列表中有多少个元素,变量`i`的值始终为0。  不明白,遍历列表时,i不是一直在变化的吗?如 for i in [1,2,3] , 每次循环一遍,i就往后读取一个。怎么就不变化,,不好意思,还是不理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 10:34:13 | 显示全部楼层
用range()是可以解决。我想弄明白前面那段代码错在什么地方
a=[0,0,0]
for i in a:
    a[i]=[0]*3
print (a)


结果:
[[0, 0, 0], 0, 0]
而且版主说i不变化,没明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 11:05:42 | 显示全部楼层
紫藤竹轩 发表于 2024-5-29 10:34
用range()是可以解决。我想弄明白前面那段代码错在什么地方
a=[0,0,0]
for i in a:

for i in a 是 遍历出 a 中的 元素赋给 i,而 a = [0, 0, 0],即 a 的每一项元素为 0

所以 i 自然就只为 0 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 12:32:09 | 显示全部楼层
isdkz 发表于 2024-5-29 11:05
for i in a 是 遍历出 a 中的 元素赋给 i,而 a = [0, 0, 0],即 a 的每一项元素为 0

所以 i 自然就只 ...

非常感谢
元素值为0,所以遍历时i就是0.是的。
只不过为啥结果[[0, 0, 0], 0, 0],只是第一个元素变成【0,0,0】,第二,第三个元素没有变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 12:45:16 | 显示全部楼层
紫藤竹轩 发表于 2024-5-29 12:32
非常感谢
元素值为0,所以遍历时i就是0.是的。
只不过为啥结果[[0, 0, 0], 0, 0],只是第一个元素变成 ...


a[i]=[0]*3 ,i 一直为 0,所以就一直是给 a 的第一个元素赋值而已呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 13:25:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-5-29 13:50 编辑
a = [0 , 0 , 0]
for i in a:            # 此循环将循环 3 次,i 的数值将会依次为 0 , 0 , 0
    a[i] = [0] * 3     # 改变 a[0] 为 [0 , 0 , 0] , 而且,3 次循环都是这一操作的重复
print(a)               # a 的内容为 [[0 , 0 , 0] , 0 , 0]
        试试这个代码
a = [0 , 1 , 2]
for i in a:           # 此循环将循环 3 次,i 的数值将会依次为 0 , 1 , 2
    a[i] = [0] * 3    # 改变 a[i] 为 [0 , 0 , 0]
print(a)              # a 的内容为 [[0 , 0 , 0] , [0 , 0 , 0] , [0 , 0 , 0]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 16:11:01 | 显示全部楼层

感谢。这么简单的问题居然没想明白。弄了一个特殊值,0 的原因。。。讲解很透彻。。。非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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