Skip to main content
 首页 » 编程设计

python之从列表中删除特定项目但保留一些在 python 中

2025年05月04日15rubylouvre

我有一个大型数据集,它在使用 re.finditer 函数查找某个字符的所有实例后生成一个列表。此处显示示例列表:

[41, 64, 87, 105, 713, 736, 759, 777, 1385, 1408, 1431, 1449, 2057, 2080, 2103, 2121, 2729, 2752, 2775, 2793,...]

我需要删除除每 4 个项目之外的所有项目。所以我需要删除索引 41、64 和 87 但不是 105 处的字符。删除 713、736 和 759 但不是 777 等。

我在 Mac OS 10.12 上使用 python。

更新:

现在我有了这个新列表 a=[105,777,1449,2121,2793],我希望替换已导入到变量中的文本文件的索引。我可以这样做吗:

for idx, item in enumerate(a): 
     raw_text[item] = "new character/string" 

请您参考如下方法:

根据您的描述,您想要删除除每四个元素之外的所有元素。您可以使用切片 运算符执行此操作:

data<b>[3::4]</b>

此处 3 是起始索引,因为我们感兴趣的第一个索引位于 3。 4 表示我们采用4 跳。

这会产生:

>>> data[3::4] 
[105, 777, 1449, 2121, 2793] 

如果您使用的是iterable(不是列表、元组等),您可以使用itertools.islice:

from itertools import islice 
 
islice(data,3,None,4)

此处 None 在语义上用作 停止索引。由于我们不想在某个索引处停止,因此我们使用 None。这将生成:

>>> list(islice(data,3,None,4)) 
[105, 777, 1449, 2121, 2793]