gpt4 book ai didi

python - 如何在列表中修改列表中的元素

转载 作者:太空狗 更新时间:2023-10-30 01:33:09 24 4
gpt4 key购买 nike

我是 Python 的新手,正在尝试学习基础知识。对列表有疑问。

有一个列表:

L = [[1,2,3],[4,5,6],[3,4,6]]

输出应该是:

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

对我有用的代码如下

for x in range(len(L)):
for y in range(len(L[x])):
L[x][y] = L[x][y] + L[x][y]
print L

它给出输出 [[2,4,6],[8,10,12],[6,8,12]]

现在我想要使用不同代码的相同输出:

for x in L:
a = L.index(x)
for y in L[a]:
b = L[a].index(y)
L[a][b] = L[a][b] + L[a][b]
print L

使用上面的代码得到的输出是:

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

我试着调试上面的输出。我在 "L[a][b] = L[a][b] + L[a][b]" 行上方放置了一个打印语句,用于打印 a 和 b。我很惊讶地看到 a 和 b 的值是:

0,0
0,0
0,2
1,0
1,1
1,2
2,0
2,1
2,0

同样,如果我注释掉 "L[a][b] = L[a][b] + L[a][b]" 行,则 a 和 b 的值为正如预期的那样:

0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2

我怀疑这可能是由于 python 中变量的范围而发生的,并试图研究一些关于 python 中范围的东西。但是对于范围界定或上述问题,我都没有得到合适的答案。

最佳答案

您使用语句修改列表 - L[a][b] = L[a][b] + L[a][b]例如-

L = [[1, 2, 3], [4, 5, 6], [3, 4, 6]]

L[0][0] = 1 最初然后你将它修改为 L[0][0] = 2

L = [[2, 2, 3], [4, 5, 6], [3, 4, 6]]

在下一个循环中,您搜索索引 2,现在是 0,0,因为您修改了列表 L。在您的示例中,我尝试将 L 与 a,b 一起打印。结果解释了行为 -

0 0
[[1, 2, 3], [4, 5, 6], [3, 4, 6]]
0 0
[[2, 2, 3], [4, 5, 6], [3, 4, 6]]
0 2
[[4, 2, 3], [4, 5, 6], [3, 4, 6]]
1 0
[[4, 2, 6], [4, 5, 6], [3, 4, 6]]
1 1
[[4, 2, 6], [8, 5, 6], [3, 4, 6]]
1 2
[[4, 2, 6], [8, 10, 6], [3, 4, 6]]
2 0
[[4, 2, 6], [8, 10, 12], [3, 4, 6]]
2 1
[[4, 2, 6], [8, 10, 12], [6, 4, 6]]
2 0
[[4, 2, 6], [8, 10, 12], [6, 8, 6]]

关于python - 如何在列表中修改列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35634825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com