【问题标题】:Why the list doesn't iterate till end and pops all the items out in python为什么列表不会迭代直到结束并在python中弹出所有项目
【发布时间】:2019-01-24 15:30:51
【问题描述】:

我希望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']

【问题讨论】:

标签: python list stack


【解决方案1】:

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

为什么不只是反转列表并创建一个新列表?

new_list = list(reversed(my_list))

如果你想清空你的 new_list

new_list =[]

或者如果你想删除

del my_list

【讨论】:

  • 完美解释!谢谢
【解决方案2】:

在遍历列表时不要pop

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2021-04-29
    • 2019-09-28
    • 1970-01-01
    • 2022-12-23
    相关资源
    最近更新 更多