如何在不复制引用的情况下在Python中对列表进行切片?

mks*_*uth 1 python list slice

我需要从函数内的列表中删除前N个元素,并且我希望修改原始列表.在Python中执行此操作的简洁方法是什么?

使用a slice不起作用,因为切片操作返回对列表的单独引用.在这个例子中,我想pkt[3,4,5]调用函数后.

>>>> def process_packet(packet, num_bytes):
         # ...
         packet = packet[num_bytes:len(packet)]
         print packet

>>> pkt = [1,2,3,4,5]
>>> process_packet(pkt, 2)
[3, 4, 5]
>>> print pkt
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

Ult*_*nct 7

只需del用来删除切片:)

>>> def process_packet(packet, num_bytes):
...     del packet[num_bytes:len(packet)]
... 
>>> a = range(10)
>>> process_packet(a,4)
>>> a
[0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)