該單詞的行索引和列索引的交叉寫功能命名find_word_horizontal接受字符的 2維列表(如填字遊戲)和一個 字符串(單詞)作爲輸入參數。該函數搜索 第2d列表的行以找到匹配的單詞。如果找到匹配項,則此函數將返回一個包含匹配起始點的行索引和列索引的列表,否則返回值None(無 報價單)。的Python:查找在2D列表中的單詞並返回是在列表
注意:我很抱歉發佈一個很長的帖子在這裏。我很抱歉,但沒有發佈適當的問題,我不可能尋求幫助。
For example if the function is called as shown below:
>
> crosswords=[['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
> word='cat'
>
> find_word_horizontal(crosswords,word)
>
> then your function should return [2,1]
>
> Notice that the 2d input list represents a 2d crossword and the
> starting index of the horizontal word 'cat' is [2,1]
Note: In case of multiple matches only return the match with lower row index. If you find two matches in the same row
then return the match with lower column index
我寫了這段代碼。也許這可能不是最好的代碼,但是:
def find_word_horizontal (crosswords, word):
list = []
output_list = []
row_index = -1
column_index = 0
list = word.split()
for sublist in crosswords:
if (sublist[1:] == list[:] or sublist[0:-1] == list[:]):
column_index += 1
row_index += 1
output_list.append(row_index)
output_list.append(column_index)
return (output_list)
#Main Program
crosswords = [['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']]
word = 'cat'
result = find_word_horizontal(crosswords,word)
print (result)
什麼我在這裏做的是首先把這個詞(即「貓」)到一個列表。第二,我已將sublist
(即2d列表中的列表)切片以檢查三個字母的單詞「cat
」。我知道我有這種硬編碼,但我找不到任何其他方式。上面,這個問題要求以這種方式。
這是我得到的輸出:
[3, 0]
爲什麼不是if語句更新Column_Index中的價值?切片順序或什麼有問題?任何幫助,將不勝感激。
一個單詞可以跨越多行,所以前三個字母在一個列表中,最後兩個在下一個?如果不是的話,一個簡單的方法可能是將每一行連接在一起並搜索整個字符串,而不是逐字比較字符。如果你認爲這會起作用,我可以在以後寫一個答案。 –
當然>感謝您的幫助。 –
試試吧,讓我知道如果作品如何! –