Найти - Пользователи
Полная версия: Сегодня на манеже кортеж в кортеже
Начало » Python для новичков » Сегодня на манеже кортеж в кортеже
1 2 3
Florenzo
Проблема: Существует кортеж в кортеже. Если перебирать кортеж через “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)
                                                                    #
                                                                    #

FishHook
Внимательно прочитайте статью в Википедии, посвещенную рекурсии
Florenzo

что такое рекурсия я понимаю, и даже смогу сделать процедуру,
а вот чего я не понимаю, так это как я могу сказать программе, что мне надо пройти именно вовнутрь.
Если бы это “вовнутрь” было в каждом элементе, я бы сделал перебор. А тут - не в каждом.
Shaman
for i in cortege1:
    print(isinstance(i, str))
alexbadaloff
Florenzo
а вот чего я не понимаю, так это как я могу сказать программе, что мне надо пройти именно вовнутрь.
Проверяй элемент в кортеже на то, что он кортеж (tuple):
isinstance(i, tuple)
bismigalis
для чего используются внутренние кортежи?
Florenzo

Похоже, что проверка на 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)

результат одинаковый:

>>>
введите слово –> идея
True д

===================

если же я вместо
print (isinstance (a, str), a)

ставлю
        print (isinstance (a, cortege1), a)

то вообще бред получается:

>>>
введите слово –> идея
Traceback (most recent call last):
File “…….py”, line 13, in <module>
print (isinstance (a, cortege1), a)
TypeError: isinstance() arg 2 must be a type or tuple of types




alexbadaloff
Florenzo
Похоже, что проверка на instanse тоже только первый слой снимает, вот:
Почитай про обход в глубину.
Florenzo
bismigalis
для чего используются внутренние кортежи?

в-общем там в кортеже хитрый перебор букв, мне надо чтобы именно на определенном месте
в кортеже/списке была или нужная буква, или несколько букв сразу, чтобы потом по порядковому номеру
в кортеже с ними делать операции. Ну, грубо говоря, буква “и”, она же по смыслу и “й”, и старорусское/украинское “i”, и номер у них в кортеже (мне так нужно), должен быть одинаковый. Потом, если я нахожу это “и” или “i” то я с ними работаю отдельно. Но хотелось бы через конструкцию “for a in b” их находить, а не делать несколько отдельных кортежей. И, если несколько отдельных кортежей, то вероятность ошибки намного больше будет. Если не найду решения, то, конечно придется несколько делать…
alexbadaloff
Мне кажется для этой задачи больше подходит словарь (dict) нежели кортеж.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB