如何在isinstance(对象,列表)中打印列表

时间:2016-12-18 21:07:51

标签: python list

我需要帮助。你能解释一下行中列表的价值 - "如果不是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

1 个答案:

答案 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()语句将准确显示正在发生的事情。你应该验证我到目前为止说的是正确的。你可以从那里完成剩余的执行。