Как найти положение букв в массиве строк - PullRequest
0 голосов
/ 11 октября 2019

У меня есть проблема, когда мне нужно найти, где буквы находятся в матрице строк. Входные данные: maze1=['*****','* * *','* G**','*D***','* ***']

Ожидаемый результат - кортеж буквенных координат. Для этого примера ожидаемый результат - [(2,2), (3,1)]

. Вот мой код. Пока я сталкиваюсь с проблемой при проверке, является ли элемент буквой:

    treasure=[]
    for i in range(len(maze)):
        for j in range(len(maze)):
            if maze[i][j].lower().isAlpha():
                treasure[i] = maze[i][j]
    print(treasure)

Ответы [ 3 ]

1 голос
/ 11 октября 2019
In [2]: maze1=['*****','* * *','* G**','*D***','* ***']                                                                                                                                                                                                                                                                 

In [3]: [(i,j) for i,s in enumerate(maze1) for j,char in enumerate(s) if char.isalpha()]                                                                                                                                                                                                                                
Out[3]: [(2, 2), (3, 1)]
0 голосов
/ 11 октября 2019

Предполагая, что ваш лабиринт имеет 5 столбцов:

[(p//5,p%5) for p,l in enumerate("".join(maze1)) if l.isalpha()]

возвращает:

[(2, 2), (3, 1)]
0 голосов
/ 11 октября 2019

Использование регулярных выражений

import re
result=[]
maze1 =['*****','* * *','* G**','*D***','* ***']
for counter, value in enumerate(maze1):
    m=re.search('([a-zA-Z]+)',value)
    if m :
        result.append((counter, m.start()))

Вывод

[(2, 2), (3, 1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...