我想知道为什么我的for循环没有更新旧的_hosts值,为什么要在下面的代码中更新worker?我没有给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_hosts
包含不在workers
中的工作进程id,则解决方案将中断。我删除了冗余生成器表达式输出
因为在
for-loop
中,您创建了一个局部变量,并将数组分配给一个局部变量,而您根本不更改old_hots
要更改数组,需要
index
并将所需内容分配给此索引。为此,我使用enumerate
如下所示:输出:
相关问题 更多 >
编程相关推荐