列表推导式是 Python 和其他一些语言中相当深奥的属性。它可能会使很多人感到困惑。尽管如此,它们所遵循的结构非常简单,基于集合符号表示法:
1. 代表输入列表成员的变量(在这种情况下是递归函数调用)。
2. 要处理的列表(在这种情况下是 n)。
3. 一个可选的谓词表达式。
4. 输出表达式,根据满足谓词的输入列表中的条目产生输出列表的条目。
该函数将返回给定输入 n 的最大大小列表/子列表。max 函数调用中包含的列表推导式使用自身的递归调用以相同的方式遍历子列表,构建所有值的大小列表(如果不是列表,则为 0)。
为了帮助解释代码,你编写另一个函数以返回传递给 max 函数调用的输入数组,以帮助提高理解:
def b(n):
return [len(n)]+[b(i) for i in n] if isinstance(n,list) else 0
例子:
>>> x = [1,2,3,4,5,[1,2,3,4,5,6,7,8,9],7,[1,2,[1,2,3,4,5,6,7,8,9,10,11,12,13,14],4,5,6,[1,2]]]
>>> a(x)
14
>>> b(x)
[8, 0, 0, 0, 0, 0, [9, 0, 0, 0, 0, 0, 0, 0, 0, 0], 0, [7, 0, 0, [14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 0, 0, 0, [2, 0, 0]]]
注意:针对您的编辑——+ 运算符允许您将两个列表合并在一起。例如:
x = [a,b,c]
y = [d,e,f]
z = x + y;
a(i)
。 - thefourtheye