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

Dor*_*lds 1 python list

我有一个大型数据集,在使用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"
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 8

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

data[3::4]
Run Code Online (Sandbox Code Playgroud)

3是我们感兴趣的第一个索引以来的起始索引,是3.在4我们采取的手段的4跳.

这会产生:

>>> data[3::4]
[105, 777, 1449, 2121, 2793]
Run Code Online (Sandbox Code Playgroud)

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

from itertools import islice

islice(data,3,None,4)
Run Code Online (Sandbox Code Playgroud)

这里None语义上用作停止索引.由于我们不想停在某个指数,我们使用None.这将产生:

>>> list(islice(data,3,None,4))
[105, 777, 1449, 2121, 2793]
Run Code Online (Sandbox Code Playgroud)