【发布时间】:2022-01-20 07:25:26
【问题描述】:
这是我的代码,谁能帮我解释一下为什么“long_band”会导致列表为空?
预期输出:[[9,10],[0,1,2,3,4,5,6,7],[18],[12]]
代码从这里开始:
arr = [1, 9, 3, 0, 18, 5, 2, 4, 10, 7, 12, 6]
len1 = len(arr)
long_band = list()
chain = list()
def band(i):
chain.append(i)
j = i+1
if j in arr:
band(j)
else:
#print(chain)
#print(long_band)
long_band.append([chain])
#print(long_band)
del chain[:]
def isHead(n):
x = n-1
if x in arr:
None
else:
band(n)
for i in range(len1):
isHead(arr[i])
print(long_band)
【问题讨论】:
-
我猜,要么 band() 永远不会被调用,要么 band() 中的 else 部分没有运行。
-
你能解释一下这段代码应该做什么吗?预期的输出没有明显的逻辑,代码本身显然不起作用,因此也不能作为解释。
-
no.. band() 被调用元素 9,0,18,12。我已经调试过了。
-
在将名为 'chain' 的列表附加到列表 'long_band' 后,我正在删除它,不知道为什么 long_band 也会变空。
-
chain中的值不会被复制,而只会附加对链的引用。当你清除链时,将只剩下一个空列表([])