同时删除多个列表区域?

2024-04-26 02:57:55 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我想同时删除1到4和7到10。你知道吗

是可以在python中这样做,还是一次只能删除一个范围?你知道吗


Tags: 列表
3条回答

据我所知,不能使用内置函数/库同时删除两个值。然而,你可以实现这一点在一行。一种方法是使用del关键字删除条目,如下所示:

>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#        `del` from higher range to lower range
#               v              v
>>> del my_list[6:10], my_list[0:4]
>>> my_list
[5, 6]
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst[:] = set(lst).difference(range(1, 5) + range(7, 11))
>>> lst
[5, 6]

您的示例有另一种方法可以通过使用slice赋值在一条语句中获得结果:

my_list[:] = my_list[5:7]

但是,在一般情况下,不能同时删除多个范围。使用Python列表,一次只能删除一个切片。你知道吗

numpy数组可以使用fancy indexing。你知道吗

相关问题 更多 >