簡體   English   中英

不斷在這個程序上出現錯誤

[英]Keep getting an error on this program

L1 = [7, 106, 17, 1, 28, 103]
L2 = [6, 44, 201, 66, 32, 71]
L1.sort()
L2.sort()
L3 = []
while L1 or L2:
    if L1[-1] < L2[-1]:
        L3.append(L2.pop())
    else:
        L3.append(L1.pop())
        if len(L1) == 0:
            L3 += L2
            break
        if len(L2) == 0:
            L3 += L1
            break
print(L3)

我收到以下錯誤,但不知道為什么我不斷收到此錯誤。 //第7行,如果L1 [-1] <L2 [-1]:IndexError:列表索引超出范圍//

看來您只是想將兩個列表組合在一起,然后對結果進行反向排序。 如果是這樣,則以下內容應該簡單得多:

L1 = [7, 106, 17, 1, 28, 103]
L2 = [6, 44, 201, 66, 32, 71]
L3 = sorted(L1 + L2, reverse=True)
print(L3)

如果您願意使用自己的方法,那么代碼中的問題只是縮進之一。 您的len(L1)len(L2)檢查僅在else條件下發生。 這應該解決它:

L1 = [7, 106, 17, 1, 28, 103]
L2 = [6, 44, 201, 66, 32, 71]
L1.sort()
L2.sort()
L3 = []
while L1 or L2:
    if L1[-1] < L2[-1]:
        L3.append(L2.pop())
    else:
        L3.append(L1.pop())
    if len(L1) == 0:
        L3 += L2
        break
    if len(L2) == 0:
        L3 += L1
        break
print(L3)

問題似乎在while循環繼續的情況下:L1或L2意味着其中只有一個必須是非空列表。

當其中一個列表變為空列表時,您的代碼將失敗,而另一個列表卻沒有。

您可能想更改(如果您的要求可以的話)

L1 or L2

L1 and L2

最好的祝福,

Znpy

L1 = [7, 106, 17, 1, 28, 103]
L2 = [6, 44, 201, 66, 32, 71]
L1.sort()
L2.sort()
L3 = []
while L1 or L2:
    if L1[-1] < L2[-1]:
        L3.append(L2.pop())
    else:
        L3.append(L1.pop())
    if len(L1) == 0:
        L3 += L2
        break
    if len(L2) == 0:
        L3 += L1
        break
print(L3)

輸出:[201、106、103、71、66、44、32、28、17、7、6、1]

您可以只檢查列表的長度,然后在while語句中使用“ and”。

def merge(L1,L2):
   L1 = [7, 106, 17, 1, 28, 103]
   L2 = [6, 44, 201, 66, 32, 71]
   L1.sort()
   L2.sort()
   L3 = []
   if len(L1) == 0 and len(L2) == 0:
      return []
   while L1 and L2:
      if L1[-1] < L2[-1]:
         L3.append(L2.pop())
      else:
         L3.append(L1.pop())
         if len(L1) == 0:
            L3 += L2
            break
         if len(L2) == 0:
            L3 += L1
            break
   print(L3)

merge(L1, L2)

暫無
暫無

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

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