在python中从枚举列表打印

在python中从枚举列表打印,python,list,numbered-list,Python,List,Numbered List,我导入了一个文件。项目将显示在列表中。我还从用户那里获取了输入,它告诉我该输入在列表中的位置 如何打印列表中的那一行以及列表中该行上方和下方的项目?在我的列表中,我有演员,电影名称,年份,以及演员扮演的角色。中间一行是今年,所以我有用户搜索,它应该打印出电影的标题和他们扮演的角色 tom = open("TomHanks.txt", "r") hanksYear = (input('What year would you like to see Tom Hanks movies?')) hank

我导入了一个文件。项目将显示在列表中。我还从用户那里获取了输入,它告诉我该输入在列表中的位置

如何打印列表中的那一行以及列表中该行上方和下方的项目?在我的列表中,我有
演员
电影名称
年份
,以及演员扮演的
角色
。中间一行是今年,所以我有用户搜索,它应该打印出电影的标题和他们扮演的角色

tom = open("TomHanks.txt", "r")
hanksYear = (input('What year would you like to see Tom Hanks movies?'))
hanksRead = tom.readlines()

with open("TomHanks.txt", "r") as f:
    hanksArray = f.read().splitlines()

for i in [i for i, x in enumerate(hanksArray) if x == hanksYear]:
    print(i)

print(i)
会弹出当年列表中的数字。如果有两次,它会给我一年中弹出的两个点。我想打印当年,然后打印列表中该项目上方和下方的位置。

您的快速解决方案将是

for i in [i for i, x in enumerate(hanksArray) if x == hanksYear]:
    print("\n".join(hanksArray[i-1:i+2]))

您的代码还有许多其他问题

这看起来更干净了

for line,val in enumerate(hanksArray):
    if val == hanksYear:
        print(hanksArray[line-1])
        print(val)
        print(hanksArray[line+1])

为确保其他人的可读性,单独编写答案

for i in [i for i, x in enumerate(hanksArray) if x == hanksYear]:
        print(hanksArray[i-1])
        print(hanksArray[i])
        print(hanksArray[i+1])

是否需要打开文件读取两次?检查
x==hanksYear
正在执行的操作。对于i,x在enumerate(hanksArray)中是什么样子的?我投票决定结束这个问题,因为它太宽了,因为你需要大部分算法来解决这个问题。这其中的每一步都可能是一个单独的问题,不清楚你在做什么和不理解什么。print(hanksArray[i-1],hanksArray[i],hanksArray[i+1])-这就是你想要的吗?先生,你太神奇了,这正是我想要的我不敢相信Easy我知道我的代码有一些问题谢谢你的帮助,我是大学一年级的学生,刚刚完成了这项工作。我收集了所有反馈,并尝试在将来使用它。再次感谢你