我有這樣一個列表返回相鄰元素:[1, 3, 4, 5, 1]
和我想刪除第一n
元素,所以對於n = 3
,我要返回列表,而從原來的列表中刪除。所以我會有[1,3,4]
和我的原始列表現在[5, 1]
。刪除並從列表中
什麼是在Python中做到這一點的最佳方式?
我有這樣一個列表返回相鄰元素:[1, 3, 4, 5, 1]
和我想刪除第一n
元素,所以對於n = 3
,我要返回列表,而從原來的列表中刪除。所以我會有[1,3,4]
和我的原始列表現在[5, 1]
。刪除並從列表中
什麼是在Python中做到這一點的最佳方式?
在Python 2.7中,它看起來像下面這樣。只需提取部分列表並刪除原始版本中不需要的部分即可。
lst = [1, 3, 4, 5, 1]
new_lst = lst[:3]
del lst[:3]
print lst
print new_lst
如果要變更原始對象,可以使用[:]
進行更改。例如:
>>> x = ['a','b','c','d','e']
>>> x[:], removed = x[3:], x[:3]
>>> x
['d', 'e']
>>> removed
['a', 'b', 'c']
這工作,因爲在右手邊的條款,x[3:]
和x[:3]
,都被他們分配到目標左側(x[:]
和removed
)之前評估。
這樣的事情?
def pop_n(lst, n):
"""
Deletes the first *n* elements from *lst* and returns them.
"""
# validate inputs
# might want to use something other than isinstance()
if not isinstance(n, int) or n < 0:
raise ValueError("n must be a non-negative integer, not {}"
.format(n))
# store the elements to return
ret = lst[:n]
# remove the elements from the original list
del lst[:n]
return ret
編輯:這裏是你的榜樣案例演示。
>>> x = [1, 3, 4, 5, 1]
>>> pop_n(x, 3)
[1, 3, 4]
>>> x
[5, 1]
>>> original = [1, 3, 4, 5, 1]
>>> removed, original[:3] = original[:3],()
>>> removed, original
([1, 3, 4], [5, 1])
就解決它,謝謝! – Lana