суббота, 14 декабря 2013 г.

Python преобразовать список из [1, [2, 3], 4] в [1, 2, 3, 4]


Задача: преобразовать список из такого типа [1, [2, 3], 4]   в    [1, 2, 3, 4]

check_lst = [[[2]], [4, [5, 6, [6], 6, 6, 6]]]

def check(lst):
    check_bool = True
    out_lst = []
    copy_lst = list(lst)
    while check_bool:
        check_bool = False
        for i in copy_lst:            
            if isinstance(i, list):
                check_bool = True
                out_lst.extend(i)
            else:
                out_lst.append(i)
        if check_bool:
            copy_lst = list(out_lst)
            out_lst = []            
    return out_lst

print check(check_lst)

[2, 4, 5, 6, 6, 6, 6, 6]
Лучшее решение


def check(lst):
    'convert all elements in lst in one row'
    return sum(map(lambda a: check(a) if isinstance(a,(list)) else [a],lst),[])



Комментариев нет:

Отправить комментарий