Я хочу сделать элементы 2d-списка в капитале из индекса, возвращаемого функцией. Например:Как сделать элементы из 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', 'a', 't'], ['T', 'e', 't', 'k']] –
Итак, причина, по которой «C» капитализируется, заключается в том, что она является первой «C» когда-либо, или первой «C» в строке? –
Моя вспомогательная функция find_word_horizontal возвращает индекс [2,1]. Если найдено как горизонтальное, так и вертикальное совпадение, выберите только горизонтальное совпадение. Итак, вам нужно сделать что-то вроде первого перехода к индексу, а затем начать заглавные буквы в индексах [2,1], [2,2], [2,3]. Следовательно, получение слов в капитале «C», «A», «T» соответствует индексу. Вы должны сделать то же самое для вертикального совпадения, если не найдено ни одного совпадения по горизонтали, и для этого вам нужно перебирать столбец вместо исходного в горизонтальном совпадении. –