【问题标题】:List not updating in sequential loops列表不按顺序循环更新
【发布时间】:2020-01-20 21:44:21
【问题描述】:

如果这是一个非常简单的问题,我深表歉意。我仍在学习 Python,找不到这个特定问题的答案。

解释我想要做什么。我正在制作一组随机分类的值。 “游览”包含正在随机移动的值以创建人口的每个成员。每个成员只是这些相同值的随机组合。它本质上是一个列表列表。

我遇到的问题是 tmp 列表在第一个循环后没有重置。一旦外部 for 循环完成它的第一个循环,尽管在每个循环开始时 tmp 等于 "tour",但它仍然为空。

这是两个循环的sn-p。

    population = []
for x in range(0, 100, 1):
    tmp = tour
    tmptour = []
    while len(tmp) >= 1:
        r = random.randint(0, len(tmp)-1)
        tmptour.append(tmp.pop(r))
    population.append(tmptour)  
return population

【问题讨论】:

    标签: python-3.x list loops


    【解决方案1】:

    当你这样做时

    tmp = tour
    

    您不是在创建tour 的副本,您只是在复制引用。所以稍后当你这样做时

    tmptour.append(tmp.pop(r))
    

    你实际上是从tour 中删除东西,这就是为什么在第二次迭代中它是空的。

    解决这个问题很简单。与其将tmp 设置为对tour 的引用,不如将其设置为tour 的副本。

    tmp = tour[:]
    

    【讨论】:

      猜你喜欢
      • 2015-04-11
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2017-01-20
      • 2021-04-23
      • 1970-01-01
      相关资源
      最近更新 更多