@jakayla
Для обхода всех элементов итерируемого объекта неизвестной глубины вложенности на Python можно использовать рекурсию. Например, для применения какого-то метода ко всем элементам можно написать следующую функцию:
1 2 3 4 5 6 7 8 9 |
def apply_method(obj, method): if isinstance(obj, list): for item in obj: apply_method(item, method) elif isinstance(obj, dict): for value in obj.values(): apply_method(value, method) else: method(obj) |
Эта функция принимает итерируемый объект obj
и метод method
. Если obj
является списком, функция рекурсивно вызывает себя для каждого элемента списка. Если obj
является словарем, функция рекурсивно вызывает себя для каждого значения в словаре. В противном случае, функция вызывает метод method
для obj
.
Пример использования:
1 2 |
my_list = [1, [2, 3], [4, [5, 6]]] apply_method(my_list, print) |
В результате будут выведены все элементы списка my_list
.