如何从列表中切片中间元素
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]
相当简单的问题。假设我有一个列表:
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
将两部分分别切片并添加这些列表
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]