从列表中删除并返回相邻元素

时间:2016-01-23 22:28:04

标签: python list

我有一个这样的列表:[1, 3, 4, 5, 1] 我想删除第一个n元素,因此对于n = 3,我想返回该列表,同时将其从原始列表中删除。所以我有[1,3,4]  我的原始列表现在是[5, 1]

在python中执行此操作的最佳方法是什么?

4 个答案:

答案 0 :(得分:4)

在Python 2.7中,这将如下所示。只需提取部分列表并删除原始版本中不需要的部分。

lst = [1, 3, 4, 5, 1]
new_lst = lst[:3] 
del lst[:3]
print lst
print new_lst

答案 1 :(得分:2)

如果要改变原始对象,可以使用[:]进行更改。例如:

>>> x = ['a','b','c','d','e']
>>> x[:], removed = x[3:], x[:3]
>>> x
['d', 'e']
>>> removed
['a', 'b', 'c']

这是有效的,因为右侧的术语x[3:]x[:3]都会在分配到左侧的目标(x[:]和{{1}之前进行评估}})。

答案 2 :(得分:1)

这样的东西?

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]

答案 3 :(得分:0)

>>> original = [1, 3, 4, 5, 1]
>>> removed, original[:3] = original[:3], ()
>>> removed, original
([1, 3, 4], [5, 1])