Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较、排除和从列表中弹出元素(Python)_Python_List_Replace_Indexoutofboundsexception - Fatal编程技术网

比较、排除和从列表中弹出元素(Python)

比较、排除和从列表中弹出元素(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)与排序列表(我的列表)中的每个元素进行比较

如果数字小于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]
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:]