Python中列表的极端模式

2024-06-26 00:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该使用“extreme pattern for nodes”在一个节点列表中找到最小值。我想我需要使用某种循环或递归。以下是阵列的“极限模式”:

    largest = items[0]
    for i in range(0,len(items),1):
        if (items[i] > largest):
            largest = items[i]

但是这种模式在这样一个包含节点的列表上不起作用:

^{pr2}$

我如何实现一个类似的模式来在上面的列表中找到最小的值?在


Tags: in列表forlenif节点模式items
3条回答
def myMin(mylist):
    smallest = float('inf')
    for l in mylist:
        if isinstance(l,list):
            tmp = myMin(l)
            if tmp < smallest:
                smallest = tmp
        elif l < smallest:
            smallest = l
    if smallest == float('inf'):
        return None
    return smallest

修正了@Blckknght的评论。在

下面是@aw4lly答案的变体,它将在Python3中工作。在

def myMin(lst):
    smallest = None
    for i in lst:
        if isinstance(i, list):
            i = myMin(i)
        if smallest is None or i is not None and i < smallest:
            smallest = i
    return smallest

这可以处理任何类型的嵌套列表,包括部分或完全空的列表(对于我们的目的,空列表是指除了其他“空”列表之外没有成员的列表)。空列表返回None作为它们的最小值,这与Python的标准min函数不完全相同(但是它使递归变得更容易)。在

^{pr2}$
curList = items
if curList:
    largest = items[0]
    while curList is not None:
        if (curList[0] > largest):
            largest = curList[0]
        curList = curList[1]
    print largest

相关问题 更多 >