Это то, что я придумал, но мне нравится, что другие лучше.
def deep_list(x):
"""fully copies trees of tuples or lists to a tree of lists.
deep_list( (1,2,(3,4)) ) returns [1,2,[3,4]]
deep_list( (1,2,[3,(4,5)]) ) returns [1,2,[3,[4,5]]]"""
if not ( type(x) == type( () ) or type(x) == type( [] ) ):
return x
return map(deep_list,x)
Я вижу, aztek ответ может быть сокращен до:
def deep_list(x):
return map(deep_list, x) if isinstance(x, (list, tuple)) else x
Обновление : Но теперь из комментария DasIch я вижу, что это не сработает в Python 3.x, поскольку map () возвращает генератор.