检查字符串是否在字母列表中 - Python3

时间:2018-05-16 17:42:33

标签: python python-3.x list

我有这个包含字母的列表,我需要检查位于另一个列表中的预定单词是否水平位于此字母列表中。

即:

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']

我不需要判断是否找不到某个单词,但如果是,我需要告诉哪一个单词。

我的问题是,到目前为止,我试图逐字逐句地比较,在类似于此的循环中:

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

但它不起作用,在最后一个循环中我尝试了几个if / else条件来判断是否找到了整个单词。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

您可以使用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}

输出:

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

答案 1 :(得分:0)

我首先将mat_input中的每个子列表合并为一个字符串:

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

然后遍历你的单词进行搜索,只需使用in运算符查看每个字符串中是否包含该单词:

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])

结果:

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