为什么列表直到最后才迭代并在python中弹出所有项

2024-06-01 06:55:53 发布

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

我希望for循环迭代次数,在my_list中有items,相应地在每次执行期间popsitemsmy_list中取出并将它们添加到purchase_list,直到my_list的所有元素被弹出并附加到purchase_list但是它不会发生。为什么

my_list = ['pen' , 'pencil' , 'cell phone' , 'axiom team' , 'panacloud' ]
purchase_list = []
for items in my_list:
    purchase_item = my_list.pop()
    purchase_list.append(purchase_item)

print(purchase_list)

输出如下:

['panacloud', 'axiom team', 'cell phone']

Tags: 元素formyphonecellitemspurchaseitem
2条回答

在遍历列表时不要pop

如果要清空一个列表并填充另一个列表,请使用:

my_list = ['pen' , 'pencil' , 'cell phone' , 'axiom team' , 'panacloud' ]

purchase_list = my_list  # ['pen', 'pencil', 'cell phone', 'axiom team', 'panacloud']
my_list = []             # []

你的问题是为什么你的代码不起作用。在Python中,在迭代过程中弹出元素从来不是一个好主意。在迭代和弹出时,实际上是从前面迭代,同时在同一循环中删除(缩小)列表(从后面)。这就是循环执行三次的原因,因为其他元素在前两次迭代中被删除

为什么不倒过来创建一个新的列表呢

new_list = list(reversed(my_list))

如果你想清空你的新目录

new_list =[]

或者如果你想删除

del my_list

相关问题 更多 >