在matrix-python中搜索

在matrix-python中搜索,python,matrix,wordsearch,Python,Matrix,Wordsearch,我需要写一个函数来搜索矩阵中的单词。目前我正在逐行搜索,看看这个词是否存在。这是我的代码: def search(p): w=[] for i in p: w.append(i) s=read_wordsearch() #This is my matrix full of letters for line in s: l=[] for letter in line: l.append(le

我需要写一个函数来搜索矩阵中的单词。目前我正在逐行搜索,看看这个词是否存在。这是我的代码:

def search(p): 
    w=[]
    for i in p:
        w.append(i)
    s=read_wordsearch() #This is my matrix full of letters
    for line in s: 
        l=[]
        for letter in line:
            l.append(letter)
            if w==l:
                return True
            else:
                pass
只有当我的单词从行的第一个位置开始时,此代码才起作用

例如,我有一个矩阵:

[[a,f,l,y],[h,e,r,e],[b,n,o,i]]
我想找到单词“fly”,但找不到,因为我的代码只能找到像“here”或“her”这样的单词,因为它们从一行的第一个位置开始


任何形式的帮助、暗示、建议都将不胜感激。(如果我的英语不好,很抱歉…

我会给你一个提示,在文本中搜索一个单词。我认为你将能够推断出你的数据矩阵

 s = "xxxxxxxxxhiddenxxxxxxxxxxx"
 target = "hidden"
 for i in xrange(len(s)-len(target)):
     if s[i:i+len(target)] == target:
         print "Found it at index",i
         break
如果您想搜索所有长度的单词,如果您有可能的解决方案列表:

 s = "xxxxxxxxxhiddenxxxtreasurexxxxxxxx"
 targets = ["hidden","treasure"]
 for i in xrange(len(s)-1):
     for j in xrange(i+1,len(s)):
         if s[i:j] in targets:
             print "Found",s[i:j],"at index",

编辑:Python中已经有很多字符串函数可用。您只需要使用字符串就可以使用它们。

您可以将矩阵中的每一行转换为字符串,并尝试在其中查找搜索工作

def search(p):
    s=read_wordsearch()
    for line in s:
        if p in ''.join(line):
            return True

将内部列表中的字符连接起来,创建一个单词,并在
中使用
进行搜索

def search(word, data):
    return any(word in ''.join(characters) for characters in data)

data = [['a','f','l','y'], ['h','e','r','e'], ['b','n','o','i']]
if search('fly', data):
     print('found')

数据
包含矩阵,
字符
是每个内部列表的名称<代码>任何
在找到第一个匹配项(短路)后都将停止。

转换为字符串后查找字符串?既然您有很多不同的解决方案,请选择一个并接受它。这看起来像是前Java或PHP开发人员编写的Python。
def search(word, data):
    return any(word in ''.join(characters) for characters in data)

data = [['a','f','l','y'], ['h','e','r','e'], ['b','n','o','i']]
if search('fly', data):
     print('found')