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

2024-04-20 10:42:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将一个数字(dist)与排序列表(my list)中的每个元素进行比较。你知道吗

如果数字小于myList中的第一个元素,那么我必须继续查找dist的正确位置,删除myList中的第一个元素并移动列表。你知道吗

我现在的主要问题是dist小于我列表中第一个元素的情况。索引超出范围。。。你知道吗

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]

Tags: 元素列表for排序ismydist情况
1条回答
网友
1楼 · 发布于 2024-04-20 10:42:30

IIUC,您想在它的正确位置插入dist,然后去掉第一个元素。这很好,但你有一些问题。最主要的是你的情况,我不是说&。您需要确保dist大于当前值,但小于下一个值。你可以这样做:

if mylist[j] < dist < mylist[j+1]:

您还必须运行到小于len(mylist)的一个,以避免索引越界。你知道吗

您可以使用的另一个技巧是for...else,它适用于dist未插入其他任何位置的拐角情况。你知道吗

简而言之,试试这个:

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:]

或者,您可以从1运行到len(mylist),并比较检查mylist[j - 1] < dist < mylist[j]。你知道吗

相关问题 更多 >