我有一个大型数据集,它在使用 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]
