请考虑以下列表:
assigned = [['A',[4, 5, 6]],['B',[7, 8, 9]],['D',[2,3]],['C',[14]]]
我希望重试子列表中整数的最大值。 在本案中为14
我的第一步是整理清单:
def flattenToMax(x):
if isinstance(x,list):
return [a for i in x for a in flattenToMax(i)]
else:
return [x]
结果是:
['A', 4, 5, 6, 'B', 7, 8, 9, 'D', 2, 3, 'C', 14]
然后我做了:
maxNum = (max([x for x in toMax if isinstance(x,int)]))
输出是我的预期结果14。 我问,如何将这两个步骤组合成一个函数
您可以使用^{} 来简化和组合步骤。此外,由于整数列表似乎总是每个子列表中的第二项,因此也可以避免类型检查
有多种方法可以做到这一点。从我得到的情况来看,您的问题是不能将此部分添加到函数中,因为它是一个递归函数:
下面是一个如何在递归函数中拟合max部分的示例(提示:不使用实际的
max()
函数,而是通过递归计算max)这是受Flattening a multilevel list of lists to a single level启发而来的,应该适用于任意数量的嵌套级别和大多数iterable类型
运行示例:https://repl.it/@GuillaumeDeslandes/multi-level-flatten
相关问题 更多 >
编程相关推荐