关键字del list [-1]和list = list [:-1]之间的行为不同

时间:2019-06-19 17:02:01

标签: python algorithm backtracking

因此,我正在尝试解决这个回溯问题,必须找出滚动n骰子的所有可能结果

我的回溯代码如下所示

def dicRoll(n, chosen = []):
    if n==0:
        print(chosen)

    else:
        for i in range(1,7):
            chosen.append(i)
            dicRoll(n-1, chosen)
            del chosen[-1]

这似乎工作得很好!但是,一旦我将del chosen[-1]替换为chosen = chosen[:-1],就会出问题!

功能失调的解决方案

def dicRoll(n, chosen = []):
    if n==0:
        print(chosen)

    else:
        for i in range(1,7):
            chosen.append(i)
            dicRoll(n-1, chosen)
            chosen = chosen[:-1]

我认为两者都做完全相同的事情。引起不同行为的两条线的用法有什么区别?有人可以解释一下。我搜索了SO,但是没有一个问题专门回答了这个问题。

0 个答案:

没有答案