gpt4 book ai didi

Python 复制列表问题

转载 作者:太空狗 更新时间:2023-10-30 02:22:49 28 4
gpt4 key购买 nike

<分区>

我不知道这里出了什么问题,但我相信这里有人可以提供帮助。我有一个列表 mylst(列表的列表)正在被复制并传递到方法 foo 中。 foo 遍历列表并将行中的第一个元素替换为传入的 var 并返回更改后的列表。我打印了 list ,发现它满足了我的期望。我用 mylst 的另一个副本和一个不同的传入 var 再次重复该过程。所以返回的两个列表应该是不同的;然而,当我再次检查第一个列表时,我发现它现在是第二个列表,mylst 也已更改为第二个列表。我没有正确复制列表吗?我正在使用 mylst[:] 方法复制它。另一个有趣的观察结果是所有列表 ID 都不相同。这是否意味着它与其他列表不同?这是我的问题的一个例子。

def printer(lst):
print "--------------"
for x in lst:
print x
print "--------------\n"

def foo(lst, string):

for x in lst:
x[0] = string

print "in foo"
for x in lst:
print x
print "in foo\n"

return lst

mylst = [[1, 2, 3], [4, 5, 6]]
print "mylst", id(mylst), "\n"

first = foo(mylst[:], "first")
print "first", id(first)
printer(first) # Correct

second = foo(mylst[:], "second")
print "second", id(second)
printer(second) # Correct

print "first", id(first)
printer(first) # Wrong

print "mylst", id(mylst)
printer(mylst) # Wrong

这是我电脑上打印出来的

mylst 3076930092 

in foo
['first', 2, 3]
['first', 5, 6]
in foo

first 3076930060
--------------
['first', 2, 3]
['first', 5, 6]
--------------

in foo
['second', 2, 3]
['second', 5, 6]
in foo

second 3076929996
--------------
['second', 2, 3]
['second', 5, 6]
--------------

first 3076930060
--------------
['second', 2, 3]
['second', 5, 6]
--------------

mylst 3076930092
--------------
['second', 2, 3]
['second', 5, 6]
--------------

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