Python 我可以使用列表理解从文件中获取行索引吗?

Python 我可以使用列表理解从文件中获取行索引吗?,python,list-comprehension,Python,List Comprehension,我需要确定文件中某些标记可能所在的位置。我开始考虑使用list.index,但很快我发现它返回第一项,并且只返回第一项。所以我决定实施我自己的解决方案 count=0 docIndex=[] for line in open('myfile.txt','r'): if 'mystring' in line: docIndex.append(count) count+=1 但这是正确的。必须有一个更简单的解决方案,因为它是Python。在这个网站和网络上搜索,我找

我需要确定文件中某些标记可能所在的位置。我开始考虑使用list.index,但很快我发现它返回第一项,并且只返回第一项。所以我决定实施我自己的解决方案

count=0
docIndex=[]
for line in open('myfile.txt','r'):
    if 'mystring' in line:
        docIndex.append(count)
    count+=1
但这是正确的。必须有一个更简单的解决方案,因为它是Python。在这个网站和网络上搜索,我找到了一些稍微好一点的东西

newDocIndex=[]
for line in fileinput.input('myfile',inplace=1):
    if 'mystring' in line:
    newDocIndex.append(fileinput.lineno())
我知道这是太多的信息,但由于昨晚我完成了期末考试的评分,我认为这是Python,我们希望在今年夏天取得一些进展,让我们尝试一个列表

所以我这样做了:

[fileinput.lineno() for line in fileinput.input('myfile',inplace=1) if 'mystring' in line]
而且有一张空名单。所以我首先猜测问题在于for中的项必须是用于构建列表的项。也就是说,如果我使用的是line而不是fileinput.lineno,我会有一个非空列表,但这不是问题所在

上述过程是否可以简化为列表理解

使用答案,但调整其可读性

listOfLines=[lineNumb for lineNumb,dataLine in enumerate(open('myfile')) if 'mystring' in dataLine]
这个怎么样

[index for index,line in enumerate(open('myfile.txt')) if 'mystring' in line]

没有什么?它以一种很好的python方式完成了代码所做的事情。这就是为什么我不特别关心列表理解的原因。他们令人费解。我说这话是开玩笑的,但说真的,为什么这被认为比更直截了当的东西好呢?我知道它们实际上更容易阅读。六个月前我会同意你的。我要做一个编辑,看看这是否更容易阅读哦,我不能编辑答案看看我的问题,我会把我建议的编辑添加到文章的末尾question@Bryan字体他们是直截了当的!至于为什么你可以导入这个更好。在调整可读性之前,我不理解你的观点,尽管我浏览了参考。SilentGhost可能意味着典型的python惯例建议在变量名的单词之间使用下划线。例如:列出行和行,而不是列出行和行。