@WebDeveloper2016

Как сделать перебор элементов многомерного списка?

Надо к каждому элементу применить функцию, но в итоге получить тот же список (в смысле не разворачивать его в одномерный).

Например было: [ 1, [ 2, 3 ], [ 4, [ 5, 6 ] ] ]
Стало: [ 2, [ 4, 6 ], [ 8, [ 10, 12 ] ] ]

Подскажите пожалуйста как это можно сделать.
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 3
VladimirZhid
@VladimirZhid
Нравится делать что-то интересное и полезное.
l = [ 1, [ 2, 3 ], [ 4, [ 5, 6 ] ] ]
def func(_list):
    _l = []
    for _i in _list:
        if isinstance(_i, list):
            _l.append(deep_map(_i))
        else:
            _l.append(_i*2)
    return _l
print(deep_map(l))

Если по простому
Ответ написан
@fireSparrow
l = [ 1, [ 2, 3 ], [ 4, [ 5, 6 ] ] ]

f = lambda a: list(map(f, a)) if isinstance(a, list) else 2*a

print(f(l))
Ответ написан
Комментировать
@abcd0x00
>>> def f(lst, func):
...     for i in range(len(lst)):
...         if isinstance(lst[i], list):
...             f(lst[i], func)
...         else:
...             lst[i] = func(lst[i])
...     return lst
... 
>>> lst = [1, [2, 3], [4, [5, 6]]]
>>> 
>>> lst = f(lst, lambda x: 2 * x + 1)
>>> lst
[3, [5, 7], [9, [11, 13]]]
>>>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы