首页 > 解决方案 > 列表和 .pop() 方法的行为:意外行为。(CPython 3.6)

问题描述

最初的意图是创建一个“列表弹出”机制来根据列表的大小产生值;即,一个自耗尽的列表。没有得到预期的行为,但想知道幕后发生了什么。

没有看到任何与我的问题很接近的东西,也许已经有了答案,但我什至不知道这是什么类别的问题。stackoverflow.com 提供的许多建议解决方案都是无关紧要的。错误或功能?

>>> ab = []
>>> for i in range(10):
    ab.append(i)


>>> ab
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> def list_split(lst):
    ni = []
    for item in lst:
        ni.append(lst.pop(0))
    return ni

>>> ab
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> bc = list_split(ab)
>>> ab
[5, 6, 7, 8, 9]
>>> bc
[0, 1, 2, 3, 4]

我原本打算发生的事情是让 ab 将其内容溢出到 bc 中,同时通过强制它在索引 0 处弹出一个项目来保持顺序。如您所见,它显然将列表分成两部分,给出旧的前半部分列表到新列表。

对于列表中的项目计数,这与列表的索引有什么关系?

标签: pythoncpython

解决方案


推荐阅读