如何在不使用pop()的情况下从列表中弹出()?

时间:2017-11-17 19:21:51

标签: python python-3.x

我有一个名为pop_item()的函数,我试图让它像pop()一样使用list类,我该怎么做,这是我的代码:     def empty(lst):         return lst == []

def pop_item(lst):
    lst = lst[::-1]
    new_lst = []
    for i in lst:
        if i != lst[-1]:
            new_lst += [i]
    lst = new_lst
    return lst

def main():
    todo = [1,2,3,4]

    print(todo) #prints [1,2,3,4] as expected


    print('\n' + 75 * '_' + '\n')

    print(pop_item(todo)) #pop the item off
    print(todo) #output should then be [1,2,3]

if __name__ == '__main__':
    main()

注意:我不允许使用任何内置函数,例如len(),index,del()等。

1 个答案:

答案 0 :(得分:0)

以下是一些不使用def pop_item(lst): lst[:] = lst[:-1] 函数的列表中弹出项目的变体,只有切片和&列表理解

使用切片和放大器弹出最后一项切片任务:

def pop_item(lst):
    lst[:] = [x for x in lst if x!=lst[-1]]

通过重建列表&来弹出一个有价值的项目(最后一个但可以是参数)切片分配

def pop_item(lst,item_position):
    lst[:] = [x for i,x in enumerate(lst) if i!=item_position]

(如果它们具有相同的值,则可以弹出列表中的其他项目)

通过在列表中指定项目位置/索引:

fill