【发布时间】:2018-01-23 07:00:49
【问题描述】:
我想将一个数字(dist)与排序列表(我的列表)的每个元素进行比较。
如果数字小于 myList 中的第一个元素,则我必须继续并为 dist 找到正确的位置,消除 myList 中的第一个元素并移动列表。
我现在的主要问题是当 dist 小于 myList 中的第一个元素时。索引超出范围...
dist = 10
mylist = [40, 30, 20, 15] # this is a sorted list
for j in range(0, len(mylist)):
if mylist[j] < dist & dist> mylist[j+1]:
print (mylist[j], '<' ,dist, '>', mylist[j+1])
#drop 40
#shift the list so that is becomes: [30,20, 15,10]
【问题讨论】:
-
使用
and而不是&。 -
@ChristianDean 有趣的是它仍然有效,因为按位优先它变成了
mylist[j] < dist > mylist[j+1],它仍然是一样的。谈运气... -
dist> mylist[j+1]这是导致问题的原因,因为在 for 循环的最后一次迭代中,j将超过列表中的最大索引,您将收到错误 -
@cᴏʟᴅsᴘᴇᴇᴅ 嗯……你说得对。多么巧合。
-
@KGS
and运算符在继续处理其余条件(如果有)之前评估第一个条件,他的方法是正确的,除了使用@Dean 提到的正确操作数。
标签: python list replace indexoutofboundsexception