Supopse,我有一个庞大的清单(比如说一千万个元素),我想撤消除last之外的所有元素。最简单的方法是:
a[0:-1] = a[1::-1]
但是问题是我认为已创建了一个临时列表。如果是这样,如何避免呢?
[编辑]对于更一般的情况,请考虑反转列表的中间部分:
[您可能要避免复制列表的唯一原因是,如果您认为它太大而无法进行重复的复制。
我认为除了手动操作之外,没有其他方法(没有副本):>
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]
在通话中,仅创建参考的临时副本,而不是列表副本。
要实现列表反转,除了最后一项,我会做-