У меня есть произвольно вложенная итерация:
numbers = (1, 2, (3, (4, 5)), 7)
и я хотел бы сопоставить функцию над ней, не меняя структуру. Например, я мог бы преобразовать все числа в строки, чтобы получить
strings = recursive_map(str, numbers)
assert strings == ('1', '2', ('3', ('4', '5')), '7')
Есть ли хороший способ сделать это? Я могу создать собственный метод, чтобы выполнить ручной траверс numbers
, но я хотел бы знать, есть ли общий способ отображения над рекурсивными итерами.
Кроме того, в моем примере это нормально, если strings
дает мне вложенные списки (или некоторые итерабельные) довольно вложенные кортежи.