Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从列表中删除特定项,但在python中保留某些项_Python_List - Fatal编程技术网

从列表中删除特定项,但在python中保留某些项

从列表中删除特定项,但在python中保留某些项,python,list,Python,List,我有一个大数据集,在使用re.finditer函数查找某个字符的所有实例后,它会生成一个列表。此处显示的示例列表: [41、64、87、105、713、736、759、777、1385、1408、1431、1449、2057、2080、, 21032127292752793,…] 我需要删除除第四项以外的所有项目。所以我需要删除索引41、64和87处的字符,而不是105。删除713、736和759,但不删除777。等等 我在MacOS10.12上使用python 更新: 现在我有了这个新列表a=

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

[41、64、87、105、713、736、759、777、1385、1408、1431、1449、2057、2080、,
21032127292752793,…]

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

我在MacOS10.12上使用python

更新:

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

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

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

data[3::4]
如果您使用的是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]

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

data[3::4]
如果您使用的是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]

这有点不同,但如果你开始反向索引,它会给你同样的结果

In [29]: s = d[::-4]

In [30]: s
Out[30]: [2793, 2121, 1449, 777, 105]

In [31]: s.reverse()

In [32]: s
Out[32]: [105, 777, 1449, 2121, 2793]

这有点不同,但如果你开始反向索引,它会给你同样的结果

In [29]: s = d[::-4]

In [30]: s
Out[30]: [2793, 2121, 1449, 777, 105]

In [31]: s.reverse()

In [32]: s
Out[32]: [105, 777, 1449, 2121, 2793]

你能写出预期的结果吗。请注意,
finditer
的结果不是一个字符串,而是一个列表。请您编写预期的输出。请注意,
finditer
的结果不是一个字符串,而是一个列表。谢谢!这正是我所期待的,现在我有了新的[105777144921212793]列表,我如何替换基于这些索引的数据集中的项目?@Dorilds:你能更新你的问题并提供更多的上下文吗?还是开始一个新问题?谢谢!这正是我所期待的,现在我有了新的[105777144921212793]列表,我如何替换基于这些索引的数据集中的项目?@Dorilds:你能更新你的问题并提供更多的上下文吗?还是开始一个新问题?