Форум сайта python.su
0
Проблема: Существует кортеж в кортеже. Если перебирать кортеж через “for i in a…..”
то он перебирает только те буквы в кортеже, которые не вложенные.
Вопрос: как сделать, чтобы он (for i in a….) перебирал и буквы во внутреннем кортеже тоже.
Конечно, я могу сделать отдельные кортежи, и отдельно их перебирать, но это же “не наш метод”
Пример вот:
# -*- coding: utf-8 -*- # cortege1 = (('а','я'),'б','в','г','д',('е','э','ё'),'з',('и','й')) # ### "внутренние" а,я // е,э,ё // и, й - не перебираются, а "внешние" б,в,г,д,з - перебираются # s = input('введите слово --> ') # # ### буквы слов только из этого кортежа!!!! ### тестовые слова - где, дай, бай, вай, айяйяй, идея ### вместо "где" будет "г, д" // вместо "идея" будет только "д" # # for a in s: if a in cortege1: print('cortege1 = ', a) # #
Отредактировано Florenzo (Июнь 5, 2013 13:38:40)
Офлайн
568
Внимательно прочитайте статью в Википедии, посвещенную рекурсии
Офлайн
0
что такое рекурсия я понимаю, и даже смогу сделать процедуру,
а вот чего я не понимаю, так это как я могу сказать программе, что мне надо пройти именно вовнутрь.
Если бы это “вовнутрь” было в каждом элементе, я бы сделал перебор. А тут - не в каждом.
Офлайн
88
for i in cortege1: print(isinstance(i, str))
Офлайн
16
FlorenzoПроверяй элемент в кортеже на то, что он кортеж (tuple):
а вот чего я не понимаю, так это как я могу сказать программе, что мне надо пройти именно вовнутрь.
Офлайн
47
для чего используются внутренние кортежи?
Офлайн
0
Похоже, что проверка на instanse тоже только первый слой снимает, вот:
# -*- coding: utf-8 -*- cortege1 = (('а','я'),'б','в','г','д',('е','э','ё'),'з',('и','й')) s = input('введите слово --> ') ### буквы только из этого кортежа!!!! ### тестовые слова - где, дай, бай, вай, айяйяй, идея for a in s: if a in cortege1: # print('cortege1 = ', a) print (isinstance (a, str), a)
print (isinstance(cortege1, tuple), a)
print (isinstance (a, str), a)
print (isinstance (a, cortege1), a)
Офлайн
16
FlorenzoПочитай про обход в глубину.
Похоже, что проверка на instanse тоже только первый слой снимает, вот:
Офлайн
0
bismigalis
для чего используются внутренние кортежи?
Офлайн
16
Мне кажется для этой задачи больше подходит словарь (dict) нежели кортеж.
Офлайн