如何从列表中切片中间元素

How to slice middle element from list

相当简单的问题。假设我有一个列表:

a = [3, 4, 54, 8, 96, 2]

我可以使用切片来省略列表中间的元素来生成这样的内容吗?

a[some_slicing]
[3, 4, 8, 96, 2]

元素 54 被遗漏了。我猜这会成功:

a[:2:]

但结果不是我所期望的:

[3, 4]

您不能用单个切片模拟弹出,因为切片只给您一个开始和结束索引。

但是,您可以使用两个切片:

>>> a = [3, 4, 54, 8, 96, 2]
>>> a[:2] + a[3:]
[3, 4, 8, 96, 2]

你可以把它包装成一个函数:

>>> def cutout(seq, idx):
        """
        Remove element at `idx` from `seq`.
        TODO: error checks.
        """
        return seq[:idx] + seq[idx + 1:]

>>> cutout([3, 4, 54, 8, 96, 2], 2)
[3, 4, 8, 96, 2]

然而,pop will be . The list pop function is defined in listobject.c.

将两部分分别切片并添加这些列表

a[:2] + a[3:]

删除项目就地调用:

your_list.pop(index)

它将return删除的项目并更改your_list

要处理任何尺寸的列表:

a.pop((len(a)-1)//2)

这是最简单的答案:

>>>a = [3, 4, 54, 8, 96, 2]

>>>a.remove(54)

[3, 4, 8, 96, 2]

我会去理解列表:

>>> a = [3, 4, 54, 8, 96, 2]
>>> a_ = [list(j for idx, j in enumerate(a) if idx != 2)]
>>> [3, 4, 8, 96, 2]