【发布时间】:2021-03-10 04:31:34
【问题描述】:
假设我们要创建所有长度为 5 的列表,这些列表以 [0, -1] 开头并以 3 个全为 2 或 3 的整数结尾。一个这样的列表(8 个可能的列表)是[0, -1, 2, 2, 3]。这是一些简单的(错误的)递归代码:
def op(a):
print(a)
if(len(a) < 5):
a.append(2)
op(a)
print("pre 2", a)
a = a[:-1] #.pop()
print("post 2", a)
if(len(a) < 5):
a.append(3)
print("pre 3", a)
op(a)
print("post 3", a)
a = a[:-1] #.pop()
op(a)
print(a)
但是,此代码不起作用并输出一些随机列表。但是,如果我们将行 a = a[:-1] 替换为 a.pop(),它就完全可以正常工作。为什么会有区别?
【问题讨论】:
-
打印什么?该中间输出与您的预期有何不同?
标签: python list recursion slice