簡體   English   中英

使用遞歸從嵌套列表中查找最小值

[英]Finding the minimum from a nested list using recursion

我正在嘗試編寫一個函數來查找嵌套列表的最小值。 我已經編寫了代碼,但得到了不能在整數和列表之間使用 < 的錯誤。 有任何想法嗎? 我不能使用任何內置函數。

def minimumVal(Y):
   if len(Y) == 1:
      return Y[0]
   minimum = Y[0]
   if minimum < minimumVal(Y[1:]):
      return minimum
   else:
      return minimumVal(Y[1:])

我的第一個想法是使用 itertools 折疊列表,但由於您不能使用內置函數,因此這里有一個有效的方法:

l = [2, 3, 4, 5, 6, [3, 4, 5, 10], [15, 4, 9, 8]]
minimum = []
for sublist in l:
    try:
        for num in sublist:
            if len(minimum) == 0:
                minimum.append(num)
            else:
                if num < minimum[0]:
                    minimum[0] = num
    except:
        if len(minimum) == 0:
            minimum.append(sublist)
        else:
            if sublist < minimum[0]:
                minimum[0] = num

print(minimum[0])

輸出:2

如果您不能使用 len(),這里有更多嘗試/例外的另一個選項:

l = [2, 3, 4, 5, 6, [3, 4, 5, 10], [15, 4, 9, 8]]
minimum = []
for sublist in l:
    try:
        for num in sublist:
            try:
                if num < minimum[0]:
                    minimum[0] = num
            except IndexError:
                    minimum.append(num)
    except:
        try:
            if sublist < minimum[0]:
                minimum[0] = sublist
        except IndexError:
                minimum.append(sublist)

print(minimum[0])

輸出:2

最后一個選項,如果你不能使用內置函數進行 append 你可以這樣做:

l = [3, 4, 5, 6, 2, [3, 4, 5, 10], [15, 4, 9, 8]]
minimum = ['place holder']
for sublist in l:
    try:
        for num in sublist:
            if minimum[0] != 'place holder':
                if num < minimum[0]:
                    minimum[0] = num
            else:
                    minimum[0] = num
    except:
        if minimum[0] != 'place holder':
            if sublist < minimum[0]:
                minimum[0] = sublist
        else:
                minimum[0] = sublist

print(minimum[0])

輸出:2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM