当前位置: 首页 > 面试题库 >

计算嵌套列表的深度或最深层次

勾向文
2023-03-14
问题内容

一个作业有一个真正的问题(和头痛)…

我在入门编程班上,我必须写一个函数,给定一个列表,该函数将返回其达到的“最大”深度。例如:[1,2,3]将返回1,[ 1,[2,3]]将返回2 …

我已经编写了这段代码(这是我能得到的最好的T_T)

def flat(l):
    count=0
    for item in l:
        if isinstance(item,list):
            count+= flat(item)
    return count+1

但是,它显然不像应有的那样工作,因为如果存在不计入最大深度的列表,它仍然会增加计数器…

例如:当我将函数与[1,2,[3,4],5,[6],7]一起使用时,它应该返回2,但它返回3 …

任何想法或帮助将不胜感激^^非常感谢!我已经为此困扰了好几个星期…


问题答案:

广度优先,无需递归,它也适用于其他序列类型:

from collections import Sequence
from itertools import chain, count

def depth(seq):
    for level in count():
        if not seq:
            return level
        seq = list(chain.from_iterable(s for s in seq if isinstance(s, Sequence)))

相同的想法,但内存消耗少得多:

from collections import Sequence
from itertools import chain, count

def depth(seq):
    seq = iter(seq)
    try:
        for level in count():
            seq = chain([next(seq)], seq)
            seq = chain.from_iterable(s for s in seq if isinstance(s, Sequence))
    except StopIteration:
        return level


 类似资料:
  • 问题内容: 我正在尝试复制嵌套列表,但是 不 使用该函数不知道该如何做。 我用了: 和 但事实证明,它们全都是浅表。 有什么提示吗? 问题答案: 我的模拟输入: 策略:遍历传入对象的每个元素,递归地下降到也可迭代的元素中,并创建相同类型的新对象。 无论它是全面的还是没有错误的,我都不会提出任何主张[1](不要传递引用自己的对象!),但是应该让您入门。 [1]真的!这里的重点是演示,而不是涵盖所有可

  • 嗨,伙计们,我有一个问题,从一开始,我会提到我已经尝试过这个和这个 我的情况如下。我有API,它发送给我 根目录处于组件状态! 我如何更新,,,,,与?最后一个约束是我不能更改root的名称(我不能将其重命名为newRoot等) 我尝试的是调用这个函数: 因此:

  • 我试图理解二维卷积神经网络和二维深度卷积神经网络计算的异同。(我理解这些概念)。 例如,假设有一个输入图像是3x3,具有3个通道(RGB),填充为1,步幅为1。过滤器是2x2。 输出是什么?(可以忽略激活和偏差) 我知道常规con2D将有1 3x3输出,而dw con2D将有3输出。除此之外,我有点困惑。谢谢

  • 问题内容: 示例文档中有一个简化的文档。这对我理解非嵌套类型与嵌套类型的聚合差异很有帮助。但是,这种简化掩盖了进一步的复杂性,因此我不得不在这里扩展这个问题。 所以我的实际文件更接近以下内容: 因此,我保留了,和的关键属性,但隐藏了许多其他使情况复杂化的内容。首先,请注意,与引用的问题相比,有很多额外的嵌套:在根和“项目”之间,以及在“项目”和“ item_property_1”之间。此外,还请注

  • 我需要实现一个在我看来更适合SOAP而不是RESTful服务的搜索,因此我正在努力将其表达为RESTendpoint。 公司(companyId) 合同(Contractd,companyId,privilegeGroupId) PrivilegeGroup(privilegeGroupId,privilegeId) 特权(privilegeId) 主键以粗体显示。 FindPrivilegesB

  • 深度学习的总体来讲分三层,输入层,隐藏层和输出层。如下图: 但是中间的隐藏层可以是多层,所以叫深度神经网络,中间的隐藏层可以有多种形式,就构成了各种不同的神经网络模型。这部分主要介绍各种常见的神经网络层。在熟悉这些常见的层后,一个神经网络其实就是各种不同层的组合。后边介绍主要基于keras的文档进行组织介绍。