我正在尝试编写一个接受二维 (2D) 字符列表(如填字游戏)和字符串作为输入参数的函数,然后该函数必须搜索二维列表的列以找到匹配项这个单词。如果找到匹配项,则该函数应返回一个列表,其中包含匹配项开始的行索引和列索引,否则应返回值 None。
例如,如果函数调用如下所示:
crosswords = [['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
word = 'cat'
find_word_vertical(crosswords,word)
然后函数应该返回:
[1,0]
def find_word_vertical(crosswords,word):
columns = []
finished = []
for col in range(len(crosswords[0])):
columns.append( [crosswords[row][col] for row in
range(len(crosswords))])
for a in range(0, len(crosswords)):
column = [crosswords[x][a] for x in range(len(crosswords))]
finished.append(column)
for row in finished:
r=finished.index(row)
whole_row = ''.join(row)
found_at = whole_row.find(word)
if found_at >=0:
return([found_at, r])
这个是用来寻找水平方向的……切换这个有帮助吗?
def find_word_horizontal(crosswords, word):
list1=[]
row_index = -1
column_index = -1
refind=''
for row in crosswords:
index=''
for column in row:
index= index+column
list1.append(index)
for find_word in list1:
if word in find_word:
row_index = list1.index(find_word)
refind = find_word
column_index = find_word.index(word)
ret = [row_index,column_index]
if row_index!= -1 and column_index != -1:
return ret
简单的版本是:
def find_word_vertical(crosswords,word):
z=[list(i) for i in zip(*crosswords)]
for rows in z:
row_index = z.index(rows)
single_row = ''.join(rows)
column_index = single_row.find(word)
if column_index >= 0:
return([column_index, row_index])
这给出了正确的输出 [1,0]
垂直查找单词:
def find_word_vertical(crosswords,word):
if not crosswords or not word:
return None
for col_index in range(len(crosswords[0])):
str = ''
for row_index in range(len(crosswords)):
str = str + crosswords[row_index][col_index]
if temp_str.find(word) >= 0:
return [str.find(word),col_index]
横向查找单词:
def find_word_horizontal(crosswords, word):
if not crosswords or not word:
return None
for index, row in enumerate(crosswords):
str = ''.join(row)
if str.find(word) >= 0:
return [index,str.find(word)]
#find vertical word in 2d
def find_it(li,wo): out_list=[]
for row in range(len(li)):
print(row)
chek_word=""
for item in range(len(li)):
chek_word=chek_word + li[item][row]
print(chek_word)
if wo in chek_word:
print(chek_word.find(wo))
out_list=[ chek_word.find(wo) , row]
print(out_list)
break
这是我的,是的,它有效
def find_word_vertical(填字游戏,单词):
如果不是填字游戏或不是单词:
返回无
number_of_columns = len(填字游戏[0])
对于范围内的 col_index (number_of_columns):
temp_str=''
对于范围内的 row_index(len(填字游戏)):
temp_str=temp_str+crosswords[row_index][col_index]
如果 temp_str.find(word)>=0:
返回 [temp_str.find(word),col_index]
返回无