【发布时间】:2021-11-02 20:00:39
【问题描述】:
我想知道为什么我的 for 循环没有更新 old_hosts 值以及为什么更新以下代码中的工作人员?我没有为workers变量分配任何新值!!!
workers = [['w1', 1],['w2',2]]
old_hosts = [['w1',-1],['w1',-11]]
for old_host in old_hosts:
old_host = [*(worker for worker in workers if worker[0]==old_host[0])][0]
old_host[1]= 3
print('old_host: ' + str(old_host))
print('workers: ' + str(workers))
print('old_hosts: ' + str(old_hosts))
输出:
old_host: ['w1', 1]
old_host: ['w1', 1]
workers: [['w1', 3], ['w2', 2]]
old_hosts: [['w1', -1], ['w1', -11]]
【问题讨论】:
-
请不要在发布有效答案后将您的问题编辑到其他主题。您可以随时发布新问题。
-
回答您的新问题:
old_host是循环中workers列表中对当前工作人员的引用。当您更改old_host中的元素时,您正在更改原始列表。 -
谢谢。我怎样才能将它们彼此分离,所以如果 old_host 从工人那里获得价值的副本?