3
我想从函数返回的索引中创建大写的2d列表元素。例如:如何从给定索引中创建二维列表资本的元素?
crosswords=[['s','d','o','g'],['c','u','c','m'],['a','x','a','t'],['t','e','t','k']]
word='cat',
然后我的函数将返回:
[['s','d','o','g'],['C','u','c','m'],['A','x','a','t'],['T','e','t','k']]
这是我曾尝试:
def find_word_vertical(crosswords, word):
x=zip(*crosswords)
#print x
for row in x:
join_list = "".join(row)
if join_list.find(word) != -1:
return [row.index(word[0]),x.index(row)]
break
def find_word_horizontal(crosswords, word):
for row in crosswords:
join_list = "".join(row)
if join_list.find(word) != -1:
return [crosswords.index(row), row.index(word[0])]
break
def capitalize_word_in_crossword(crosswords,word):
if find_word_horizontal or find_word_vertical is not None:
for i in word:
for j in crosswords:
if i in j:
i.upper()
return crosswords
这里的结果是什么:
[['s', 'd', 'o', 'g'], ['c', 'u', 'c', 'm'], ['a', 'c', 'a', 't'], ['t', 'e', 't', 'k']]
灿任何人都帮助我?
谢谢您的回复。但我只想要第一场比赛的资本元素。我的函数接受一个二维字符列表(如纵横字谜)和一个字符串(字)作为输入参数。该函数搜索2d列表的行和列以找到匹配的单词。如果找到匹配项,则此函数将大写匹配字符的二维列表并返回该列表。我的函数应该返回[['s','d','o','g'],['C','u','c','m'],['A','x', '','','',''''']] –
所以'C'的大写原因是它是第一个'C',或者第一个'C'在行中? –
我的帮助函数find_word_horizontal返回索引[2,1]。如果同时发现水平和垂直匹配,则只选择水平匹配。所以,你必须先做索引,然后开始在索引[2,1],[2,2],[2,3]中对单词进行大写处理。因此,在索引中分别用大写字母“C”,“A”,“T”表示。如果没有找到水平匹配,您必须对垂直匹配执行相同操作,并且您必须遍历列而不是水平匹配的原始数据。 –