在python中,什么是最快的方法,可以在适当的地方还原列表的一部分?

问题描述 投票:0回答:2

Supopse,我有一个庞大的清单(比如说一千万个元素),我想撤消除last之外的所有元素。最简单的方法是:

a[0:-1] = a[1::-1]

但是问题是我认为已创建了一个临时列表。如果是这样,如何避免呢?

[编辑]对于更一般的情况,请考虑反转列表的中间部分:

python list slice
2个回答
0
投票

[您可能要避免复制列表的唯一原因是,如果您认为它太大而无法进行重复的复制。

我认为除了手动操作之外,没有其他方法(没有副本):>

a = [1, 2, 3, 4, 5, 6]

def revert_slice(first, last, a_list):
    while first < last:
        a_list[first], a_list[last] = a_list[last], a_list[first]
        first += 1
        last -= 1

revert_slice(0, 2, a)
print(a)

输出:

[3, 2, 1, 4, 5, 6]

在通话中,仅创建参考的临时副本,而不是列表副本。


0
投票

要实现列表反转,除了最后一项,我会做-

© www.soinside.com 2019 - 2024. All rights reserved.