Igor Braga
Igor Braga

Reputation: 37

Check if a string is in a list of letters - Python3

I have this list which contains letters, and I need to check if a pre-determined word located in another list is horizontally inside this list of letters.

i.e.:

mat_input = [['v', 'e', 'd', 'j', 'n', 'a', 'e', 'o'], ['i', 'p', 'y', 't', 'h', 'o', 'n', 'u'], ['s', 'u', 'e', 'w', 'e', 't', 'a', 'e']]


words_to_search = ['python', 'fox']

I don't need to tell if a word was not found, but if it was I need to tell which one.

My problem is that so far I've tried to compare letter by letter, in a loop similar to this:

for i in range(n):                         # n = number of words
  for j in range(len(word_to_search[i])):  # size of the word I'm searching
    for k in range(h):                     # h = height of crossword
      for m in range(l):                   # l = lenght of crossword

But it's not working, inside the last loop I tried several if/else conditions to tell if the whole word was found. How can I solve this?

Upvotes: 1

Views: 573

Answers (2)

Ajax1234
Ajax1234

Reputation: 71451

You can use str.join:

mat_input = [['v', 'e', 'd', 'j', 'n', 'a', 'e', 'o'], ['i', 'p', 'y', 't', 'h', 'o', 'n', 'u'], ['s', 'u', 'e', 'w', 'e', 't', 'a', 'e']]
words_to_search = ['python', 'fox']
joined_input = list(map(''.join, mat_input))
results = {i:any(i in b or i in b[::-1] for b in joined_input) for i in words_to_search}

Output:

{'python': True, 'fox': False}

Upvotes: 4

n3utrino
n3utrino

Reputation: 1210

I'd start by joining each sublist in mat_input into one string:

mat_input_joined = [''.join(x) for x in mat_input]

Then loop over your words to search and simply use the in operator to see if the word is contained in each string:

for word_to_search in words_to_search:
    result = [word_to_search in x for x in mat_input_joined]
    print('Word:',word_to_search,'found in indices:',[i for i, x in enumerate(result) if x])

Result:

Word: python found in indices: [1]
Word: fox found in indices: []

Upvotes: 0

Related Questions