如何从列表中删除特定索引而没有副作用?也就是说,使用:
L = [1,2,3,4]
del L[2]
不是替代方案,因为我仍然希望保持L
完好无损。有没有比做深拷贝更简洁的方法然后从那里删除值?
答案 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]