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

时间:2015-06-10 13:18:08

标签: python slice

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

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

我可以使用切片在列表中间省略一个元素来产生这样的东西吗?

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

是否遗漏了元素54。我会猜到这会解决问题:

a[:2:]

但结果不符合我的预期:

[3, 4]

6 个答案:

答案 0 :(得分:16)

您无法使用单个切片模拟pop,因为切片仅为您提供单个开始和结束索引。

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

>>> 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]

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

public static final String RESULT_REQUEST = 1;

但是,pop将是faster。列表弹出功能在listobject.c中定义。

答案 1 :(得分:5)

删除项目就地呼叫:

your_list.pop(index)

它将返回已删除的项目并更改your_list

答案 2 :(得分:4)

分开切割这两个部分并添加这些列表

a[:2] + a[3:]

答案 3 :(得分:2)

使用任何尺寸列表:

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

答案 4 :(得分:0)

这是最简单的答案:

  

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

     

>>> a.remove(54)

     

[3,4,8,96,2]

答案 5 :(得分:0)

我会理解列表:

=