如何复制列表?

2024-09-28 03:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个功能:

def mutate(self, index):
    ing1, ing2 = random.randrange(8), random.randrange(8)
    while ing1 == ing2:
        ing2 = random.randrange(8)
    ptr = self.drinkList[index].ing[:]
    ing1thr = ptr[ing1].max - ptr[ing1].perc
    ing2thr = ptr[ing2].perc - ptr[ing2].min
    mutatedFitness = 0
    if ing1thr & ing2thr:
        change = random.randrange(ing1thr if ing1thr < ing2thr else ing2thr)
        ptr[ing1].perc += change
        ptr[ing2].perc -= change
    for x in ptr:
        mutatedFitness += x.perc * x.price
    mutatedFitness = 280000 - mutatedFitness
    if mutatedFitness > self.drinkList[index].fitness:
        self.drinkList[index].ing = ptr[:]

现在,我希望ptr是自饮清单[索引].ing列表,但在调试器中我注意到它指向对象本身而不是复制。我以为切片是避免的方法,我在哪里犯了错误?在


Tags: selfindexifrandomchangeingrandrangeptr
2条回答

扩展斯卡拉的话

import copy
new_list = copy.deepcopy(old_list)

切片创建一个view对象afaik。使用copy模块。在

相关问题 更多 >

    热门问题