列表中的比较,排除和弹出元素(Python)

时间:2017-08-15 10:56:45

标签: python list replace indexoutofboundsexception

我想比较排序列表(我的列表)中每个元素的数字(dist)。

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

现在我的主要问题是当dist小于myList中的第一个elem时的情况。该指数超出范围...

div.playlist {
    position: relative;
    display: inline-block;
}
div.playlist {
    span {
        position: absolute;
        text-align: center;
        height: 100%;
        width: 100%;
        color: white;
        font-size: 20px;
    }
    .span-icon {
        padding-bottom: 50px !important;
    }
}
div.playlist span:before {
    display: inline-block;
    vertical-align: middle;
    height: 100%;
    content: '';
}

1 个答案:

答案 0 :(得分:2)

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]