如何逐个删除列表中的所有项目,删除后同时打印

2024-04-18 09:07:26 发布

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

我试图逐个删除列表中的元素,并希望在同一for循环中删除后打印每个元素。你知道吗

我试着用下面的代码删除它们,但是它说 '索引器错误:列表分配索引超出范围'


usernames = ['yasir', 'anjum', 'moin', 'admin', 'iqbal'] 
if usernames:
    for i in range(0, len(usernames)):
        #print (usernames[i]) this is working fine
        del (usernames[i])
else:
    print('The list is already empty')

我希望在删除元素后打印它,直到删除完所有元素。你知道吗


Tags: 代码元素列表forifadminis错误
3条回答

使用list.pop方法。你知道吗

>>> usernames = ['yasir', 'anjum', 'moin', 'admin', 'iqbal'] 
>>> 
>>> while usernames:
...     print (usernames.pop())
... 
iqbal
admin
moin
anjum
yasir

如果你想保持秩序,倒过来。你知道吗

您使用的是来自0..N-1的固定循环,N只计算一次,即当您第一次进入循环时。但是由于del()N(=len(username))随着环的每次跳闸而减小。在某个时刻,你到达i >= N,因此IndexError: list index out of range。你知道吗

请尝试此变体:

while usernames:
    print(usernames[0])
    del(usernames[0])

del语句使所有后面的元素移到列表的左侧。这就是为什么你得到了IndexError——当你的循环到达列表的一半时,列表已经不够长了!你知道吗

可以使用删除每个元素,一次删除一个

while usernames:
    del usernames[0]

如果需要在删除元素后输出每个元素,则必须先将其保存在变量中。你知道吗

while usernames:
    name = usernames[0]
    del usernames[0]
    print(name)

请注意,从列表中删除有点低效,因为列表中的其余元素必须重新编号。你知道吗

相关问题 更多 >