在 Python For 循环中追加和弹出项目 [重复]

Posted

技术标签:

【中文标题】在 Python For 循环中追加和弹出项目 [重复]【英文标题】:Appending and Popping Items in a Python For Loop [duplicate] 【发布时间】:2022-01-23 07:54:12 【问题描述】:

我有一个大列表,我想将一半列表附加到 list1 和 list2,同时从原始列表中弹出项目。

mylist = [1, 2, 3, 4, 5, 6, 7, 8]
 
list1 = []
list2 = []

for item in mylist:
    list1.append(mylist.pop())
    list2.append(mylist.pop())

    
list1
[8, 6, 4]
list2
[7, 5, 3]

为什么它没有遍历 mylist 中的整个列表?如果我通过添加项目来增加列表大小,它还会将更多项目追加/弹出到其他列表,但仍然不会完全遍历整个列表。

再次,我试图将原始列表的一半放入 list1,将原始列表的另一半放入 list2。

【问题讨论】:

【参考方案1】:

在迭代时修改列表往往会混淆迭代。

尝试这种方法,您不会迭代列表本身:

>>> list1 = []
>>> list2 = []
>>> while mylist:
...     list1.append(mylist.pop())
...     list2.append(mylist.pop())
...
>>> list1
[8, 6, 4, 2]
>>> list2
[7, 5, 3, 1]

或者:

>>> mylist = [1, 2, 3, 4, 5, 6, 7, 8]
>>> list1 = mylist[::-2]
>>> list2 = mylist[-2::-2]
>>> list1
[8, 6, 4, 2]
>>> list2
[7, 5, 3, 1]

【讨论】:

谢谢。但为什么它不适用于 for 循环?我不明白为什么它没有通过列表。 参见***.com/questions/6260089/… 非常简短的解释是for 正在尝试根据您弹出项目之前的列表长度获取下一个索引,因此它失败并杀死了循环。

以上是关于在 Python For 循环中追加和弹出项目 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中使用for循环进行追加工作

python:双端队列与列表性能比较

使用for循环(Python)追加/连接多个excel数据集

python 异常和弹出框

使用单行for循环python追加到一个空列表

for循环和追加的Python问题[重复]