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行,in 如果L1 [-1]&lt; L2 [-1]: IndexError:列表索引超出范围//
答案 0 :(得分:1)
看起来您只是想将两个列表组合在一起并将结果反向排序。如果是这样,以下内容应该更简单:
T
如果您更愿意使用您的方法,代码中的问题只是缩进之一。您的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
答案 1 :(得分:0)
问题似乎是在while循环继续的情况下:L1或L2意味着其中只有一个必须是非空列表。
当其中一个列表变为空列表时,您的代码将失败,但另一个列表不会。
您可能希望从
更改(如果这可以满足您的要求)条件L1 or L2
到
L1 and L2
Znpy
答案 2 :(得分:0)
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]
答案 3 :(得分:0)
您可以检查列表的长度,然后在while语句中使用“和”。
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)