比较、排除和从列表中弹出元素(Python)
我想将数字(dist)与排序列表(我的列表)中的每个元素进行比较 如果数字小于myList中的第一个元素,那么我必须继续查找dist的正确位置,删除myList中的第一个元素并移动列表 我现在的主要问题是dist小于myList中的第一个元素的情况。索引超出范围比较、排除和从列表中弹出元素(Python),python,list,replace,indexoutofboundsexception,Python,List,Replace,Indexoutofboundsexception,我想将数字(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] < dis
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]
dist=10
mylist=[40,30,20,15]#这是一个排序列表
对于范围(0,len(mylist))中的j:
如果mylist[j]mylist[j+1]:
打印(mylist[j],'',mylist[j+1])
#下降40
#移动列表,使其变为:[30,20,15,10]
IIUC,您要在其右侧位置插入dist
,然后删除第一个元素。这很好,但您有一些问题。主要是你的情况,我不是说&
。您需要确保dist
大于当前值,但小于下一个值。你是这样做的:
if mylist[j] < dist < mylist[j+1]:
或者,您可以从1运行到
len(mylist)
,并比较检查mylist[j-1]
使用和而不是&
@ChristianDean它仍然有效,因为按位优先,它变成了mylist[j]mylist[j+1]
,这仍然是相同的。谈论运气…dist>mylist[j+1]
这就是问题的原因,因为在for循环的最后一次迭代中,j
将超过列表中的最大索引,您将获得error@cᴏʟᴅsᴘᴇᴇᴅ 嗯……你说得对。太巧了。@KGS和
运算符在继续处理其余条件(如果有的话)之前计算第一个条件,他的方法是正确的,除了使用@Dean提到的正确操作数。非常感谢您的解释。这对我帮助很大。
for j in range(len(mylist) - 1):
if mylist[j] < dist < mylist[j + 1]:
mylist.insert(j, dist)
mylist = mylist[1:]
break
else:
mylist.append(dist)
mylist = mylist[1:]