首页 > 解决方案 > 查看特定值的列表列表

问题描述

我需要读取 .txt 文件并找到 T 的特定模式,即 T 以交叉模式排列。

这是我到目前为止所做的,当我打印时它的输出如下:

def find_treasure(mapfile):
    lst = []
    with open(mapfile, 'r') as rf:
        for line in rf:
            lst.append(line.split())
    print(lst)

输出 我最初的想法是使用 2 个 for 循环来遍历列表中的每个项目,然后查看项目本身中的每个字母/字符,但我不断收到列表索引范围错误或它根本不起作用。

for i in range(len(lst)):
    for j in range(len(lst[i])):
        if lst[i][j] == 'T':
            print('WHy')
        else:
            print('why am i here why')

你们有什么建议吗?

编辑:示例输入:

WWWWWWWWWWWWWWWWWWWWWWW.TTT..^^^^...WWWWWWWW
WWWWWWWWWWWWWWWWWWWWWW...T..^^^^....WWWWWWWW
WWWWWWWWWWWWWWWWWWWWWW......^^^......WWWWWWW
WWWWWWWWWWWWWWWWWWWWW..T.....^^^^..T.WWWWWWW
WWWWWWWWWWWWWWWWWWWWW........^^^^..T.WWWWWWW
WWWWWWWWWWWWWWWWWWWW........^^^....T.WWWWWWW
WWWWWWWWWWWWWWWWWWWW........^^^......WWWWWWW
WWWWWWWWWWWWWWWWWWWWWW.....^^^^.....WWWWWWWW
WWWWWWWWWWWWWWWWWWWWWW.....^^^......WWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWW....^^......WWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWW......^.....WWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWW............WWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWW....T......WWWWWWWWWWWWW
WWWWW...WWWWWWWWWWWWW..T.T.....WWWWWWWWWWWWW
WWWW..TTT.WWWWWWWWWWW...T.....WWWWWWWWWWWWWW
WWWWW.......WWWWWWWWWWW......WWWWWWWWWWWWWWW
WWWWWWWW...T.WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWW....WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWW.T.WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWW.WWWWWWWWWW.....WWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWW....T..WWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWW.TTT..WWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWW..T..WWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWW...WWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
W: WATER                                    
T: TREE                                     
.: GRASS                                    
^: MOUNTAIN 

预期的输出是:(21,25)

标签: python-3.xlist

解决方案


这不是一个完整的响应,但我在您的代码中看到了两个问题。

首先,正如Tadhg所提到的,您find_treasure没有返回任何值,这可能导致range errors.

连接后,您的另一个块仍然存在。而你达到你的why am i here why声明的原因是split()没有separator参数的方法只是拆分了blank spaces. 如果你想从行中分离每个值,你应该使用lst.append(list(line))这将创建一个矩阵,其中包含要访问的输入的所有元素mat[][]

我希望这可以帮助你=)。


推荐阅读