use*_*527 7 python list-comprehension
def a(n):
return max([len(n)] + [a(i) for i in n]) if isinstance(n, list) else 0
Run Code Online (Sandbox Code Playgroud)
这是我最近的一次测试,我无法让列表理解得失败.所以基本上这个函数应该返回最大列表的长度(这是我假设基于正确的答案)我会理解,如果不是这部分函数:
+ [a(i) for i in n])
Run Code Online (Sandbox Code Playgroud)
当我看到那个部分时,看起来它增加了迭代的列表长度.有人可以阐明那部分的目的吗?更具体地说,添加的原因.
编辑:所以仔细看之后......看起来函数将第一个列表的长度放在一个列表中,然后放下下一个列表的长度并返回最大值?...这是如何工作的?
此函数计算树中最大节点的长度(在列表中实现为列表).也许通过一些重命名和重新编写,它会更清楚:
def longest_list_in_tree(tree):
if not isinstance(tree, list):
return 0 # This is a leaf-value of the tree, it has "length 0"
own_length = len(tree)
longest_descendant_of_each_subtree = [
longest_list_in_tree(subtree) for subtree in tree
]
return max([own_length] + longest_descendant_of_each_subtree)
Run Code Online (Sandbox Code Playgroud)