如何从列表中删除项目?

时间:2018-04-11 16:49:37

标签: python list testing items

这是我到目前为止的代码:

def remove(lst: list, pos: int):
    pass

def test_remove():
    lst = ['Turkey', 
       'Stuffing',
       'Cranberry sauce',
       'Green bean casserole',
       'Sweet potato crunch',
       'Pumpkin pie']

remove(lst, 2)

assert lst == ['Turkey', 
       'Stuffing',
       'Green bean casserole',
       'Sweet potato crunch',
       'Pumpkin pie',
       None]

lst = [5, 10, 15]
remove(lst, 0)
assert lst == [10, 15, None]

lst = [5]
remove(lst, 0)
assert lst == [None]

if __name__ == "__main__":
    test_remove()

在remove()中编写代码以移除槽位置中的项目,将项目移出它以关闭间隙,并在最后一个槽中保留值None。

关于我应该从哪里开始的任何想法?

3 个答案:

答案 0 :(得分:1)

根据列表lstpop(i)方法会从i中移除lst'索引中的项目。

def remove(lst: list, pos: int):
    lst.pop(pos)

我还注意到,在测试中,您希望在删除项目时,None被添加到列表的末尾。不是这种情况。 None不应该是字符串列表中的项目,如果从列表中删除某个项目,该项目就会消失,但其余项目保持不变,并且不会添加任何其他内容。

如果您确实想这样做,只需将lst.append(None)添加到remove()功能的最后一行。

答案 1 :(得分:1)

  

在remove()中编写代码以移除插槽pos中的项目,将项目移到它之外以关闭间隙,并在最后一个插槽中保留值None。

您可以使用pop list方法删除该项目,然后将None添加到列表中。

def remove(lst: list, pos: int):
    lst.pop(pos)
    lst.append(None)

答案 2 :(得分:0)

只需使用基本概念,我们就可以使用for循环:

def remove(lst: list, pos: int):
   for i in range(pos, len(lst)-1):
       lst[i] = lst[i+1]
   lst[-1] = None
   return lst

和测试:

remove([1,2,3,4,5,6], 2)
#[1, 2, 4, 5, 6, None]

请注意,只需使用@galfisher@R Sahu描述的内置方法即可。