我试图列出11个元素
我想只从l[0]
到l[5]
弹出最大元素。在以下两个条件之一:
l[5] >= 3
或l[5]
已不存在或None
。
l = [2,8,6,2,8,7,9,8,6,7,4]
max = 0
maxIndex = 0
while (l[5] >= 3 or l[5] is None):
for x in range(6):
if l[x] > max:
max = l[x]
maxIndex = x
l.pop(maxIndex)
print(l)
我收到错误:
IndexError: list index out of range
我知道某些时候l[5]
将不复存在,但我该如何创建此代码。
答案 0 :(得分:2)
最小可重现代码:
l = [1, 2, 3]
l[3] is None # raises IndexError
assert len(l) == 3 # len(l) returns 3
如您所见,访问不存在的项会引发IndexError,因此正确的条件应包含长度测试。
while (len(l) >= 6 and l[5] >= 3):
答案 1 :(得分:0)
扭转条件:
l = [2,8,6,2,8,7,9,8,6,7,4]
max = 0
maxIndex = 0
while len(l) > 5 or l[5] >= 3:
for x in range(6):
if l[x] > max:
max = l[x]
maxIndex = x
l.pop(maxIndex)
print(l)
答案 2 :(得分:0)
我认为这可以满足您的所有需求 - 如果有第5个元素并且是>=3
或None
>>> l = [2,8,6,2,8,7,9,8,6,7,4]
>>> max(l[0:5]) if len(l)>5 and (l[5]>=3 or l[5] is None) else None
8
>>> l = [1,2,3]
>>> max(l[0:5]) if len(l)>5 and (l[5]>=3 or l[5] is None) else None
>>>