我希望for
循环迭代次数,items
中有my_list
,并且在每次执行过程中相应地pops
,items
my_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']
修改 我解释说,我希望循环像我所说的那样运行。清除这一点,我不想知道另一种方法。但是想知道为什么以及如何给我这个输出。
答案 0 :(得分:1)
在遍历列表时不要pop
。
如果您要清空一个列表并填写另一个列表,请使用:
my_list = ['pen' , 'pencil' , 'cell phone' , 'axiom team' , 'panacloud' ]
purchase_list = my_list # ['pen', 'pencil', 'cell phone', 'axiom team', 'panacloud']
my_list = [] # []
答案 1 :(得分:1)
您的问题是为什么您的代码无法正常工作。在迭代期间,弹出元素在Python中绝不是好主意。在迭代和弹出时,实际上是从前面进行迭代,同时在同一循环中删除(缩小)列表(从后面)。这就是循环执行三次的原因,因为其他元素在前两次迭代中被删除。
为什么不仅仅反转列表并创建新列表?
new_list = list(reversed(my_list))
如果您希望清空new_list
new_list =[]
或者如果要删除
del my_list