我需要帮助。你能解释一下行中列表的价值 - "如果不是isinstance(前面,列表):"。我试图找到它的答案。我是python的新手。
def sumtree(L): # Breadth-first, explicit queue
tot = 0
items = list(L) # Start with copy of top level
print('items :',items)
while items:
front = items.pop(0) # Fetch/delete front item
print('Front:',front)
print('list:',items)
print(isinstance(front, list))
if not isinstance(front, list):
print('tot in if:',tot)
tot += front # Add numbers directly
print('tot',tot)
else:
items.extend(front) # <== Append all in nested list
print('inside:',items)
return tot
L = [1, [2, [3, 4], 5], 6, [7, 8]] # Arbitrary nesting
答案 0 :(得分:1)
让我们看一下您的示例输入:
L = [1, [2, [3, 4], 5], 6, [7, 8]]
这是一个包含4个元素的列表:
1
[2, [3, 4], 5]
6
[7, 8]
当您致电sumtree(L)
时,front
的第一个值将是1
,而不是列表,因此if
子句将会执行。在第二次迭代中,front
将获得[2, [3, 4], 5]
这是一个列表,因此将执行else
子句。代码中的print()
语句将准确显示正在发生的事情。你应该验证我到目前为止说的是正确的。你可以从那里完成剩余的执行。