从列表中删除元素而没有副作用

时间:2015-07-08 08:22:17

标签: python list python-3.x

如何从列表中删除特定索引而没有副作用?也就是说,使用:

L = [1,2,3,4]
del L[2]

不是替代方案,因为我仍然希望保持L完好无损。有没有比做深拷贝更简洁的方法然后从那里删除值?

3 个答案:

答案 0 :(得分:6)

切片列表:

L = [1,2,3,4]
L[:2] + L[3:]
[1, 2, 4]

答案 1 :(得分:2)

如果您需要深层副本,那么我建议

import copy

copy.deepcopy(L[:i]) + copy.deepcopy(L[i+1:])

其中i是您要删除的索引。

答案 2 :(得分:1)

您可以创建一个没有待删除值的新列表。

如果要删除特定的索引/索引。

>> [x for index,x in enumerate(L) if index != 2]
[1, 2, 4]

或者,

>> [L[i] for i in xrange(len(L)) if i != 2]
[1, 2, 4]