弹出Python列表中的所有项目

Mic*_*cke 1 python list-comprehension python-2.7

我想知道是否有办法从Python列表中"弹出所有"项目?

它可以在几行代码中完成,但操作看起来很简单我只是假设必须有一个比复制和清空原始文件更好的方法.我在谷歌搜索了很多,在这里搜索,但无济于事.

我意识到弹出所有项目只会返回原始列表的副本,但这正是我想要做的原因.我不想返回列表,而是返回其中包含的所有项目,同时清除它.

class ListTest():
    def __init__(self):
        self._internal_list = range(0, 10)

    def pop_all(self):
        result, self._internal_list = self._internal_list[:], []
        return result

        # ... instead of:
        # return self._internal_list.pop_all()


t = ListTest()

print "popped: ", t.pop_all()
print "popped: ", t.pop_all()
Run Code Online (Sandbox Code Playgroud)

...当然会返回预期的:

popped:  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
popped:  []
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 5

这正是它的完成方式.我能想到的唯一实质性改进是就地清空列表:

def pop_all(l):
    r, l[:] = l[:], []
    return r
Run Code Online (Sandbox Code Playgroud)

此版本与您的版本之间的区别在于从各个位置引用的列表上的行为:

>>> a = [1, 2, 3]
>>> b = a
>>> pop_all(a)
[1, 2, 3]
>>> b
[]
Run Code Online (Sandbox Code Playgroud)