我正在尝试对 Python 列表进行排序int
s,然后使用.pop()
函数返回最高的一个。我尝试过以不同的方式编写该方法:
def LongestPath(T):
paths = [Ancestors(T,x) for x in OrdLeaves(T)]
#^ Creating a lists of lists of ints, this part works
result =[len(y) for y in paths ]
#^ Creating a list of ints where each int is a length of the a list in paths
result = result.sort()
#^meant to sort the result
return result.pop()
#^meant to return the largest int in the list (the last one)
我也尝试过
def LongestPath(T):
return[len(y) for y in [Ancestors(T,x) for x in OrdLeaves(T)] ].sort().pop()
在这两种情况下.sort()
导致列表成为None
(其中没有.pop()
函数并返回错误)。当我删除.sort()
它工作正常但不返回最大的int
因为列表没有排序。
只需删除分配
result = result.sort()
只留下
result.sort()
The sort
方法就地工作(它修改现有列表),因此它返回None
。当您将其结果分配给列表名称时,您正在分配None
。所以不需要分配。
但无论如何,您想要完成的事情可以轻松地(并且更有效地)写成一行:
max(len(Ancestors(T,x)) for x in OrdLeaves(T))
max
运行时间为线性时间 O(n),而排序时间为 O(nlogn)。您也不需要嵌套列表理解,单个生成器表达式就可以了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)