相当简单的问题。假设我有一个列表:
a = [3, 4, 54, 8, 96, 2]
我可以使用切片在列表中间省略一个元素来产生这样的东西吗?
a[some_slicing]
[3, 4, 8, 96, 2]
是否遗漏了元素54
。我会猜到这会解决问题:
a[:2:]
但结果不符合我的预期:
[3, 4]
答案 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)
我会理解列表:
=