如何在Python中设置延迟自动删除列表项?

8

如果我有一个列表,例如:num=[1,2,3,4],我想每2秒删除一次list[0],那么在2秒后,num中的列表将是num = [2,3,4],再过2秒后它将变成num =[2,3],我该怎么做呢?

4个回答

9
你可以使用 time.sleep,并使用 del 删除第一个元素:
for i in range(len(num)):
    time.sleep(2)
    del num[0]

此外,如果您还想对第一个值进行操作,可以使用num.pop(0) - KuboMD
1
此外,虽然性能在这里可能不是问题,但对于长列表,您可能希望使用collections.deque而不是列表:https://docs.python.org/3.5/library/collections.html#collections.deque - Gallaecio

4
另一种解决方案是使用list.pop(),如下所示:
import time
num=[1,2,3,4]
while num:
  num.pop(0)
  time.sleep(2)

3
这样做会一直持续,直到没有元素可移除为止。
import time

num = [1, 2, 3, 4]
while num:
    time.sleep(2)
    del num[0]
    print (num)

7
可能会考虑将 while True 改为 while num - 这样当列表为空时,循环会优雅地退出(或者起始时不会尝试从空列表中删除),而不是引发异常。 - Jon Clements
好主意。完成。 - Joshua Fox

0

试试这段代码!

通过导入time文件使用sleep函数,并使用del命令从列表中删除元素。

代码:

import time

num = [1,2,3,4]
for i in num:
    time.sleep(2)
    print("Delete item ", i)
    del i

输出:

Delete item  1                                                                                                          
Delete item  2                                                                                                          
Delete item  3                                                                                                          
Delete item  4 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接