将列表转换为元组,同时转换列表中的列表

时间:2012-11-13 19:21:37

标签: python list type-conversion tuples

在Python中将列表转换为元组的简单方法是:

tuple1=tuple(list1)

但是如果list1包含一个或多个列表,它们将保持不变。有没有办法可以转换它们? E.g。

list1=[1,3,'abc',[3,4,5]]

转到:

tuple1=(1,3,'abc',(3,4,5))

2 个答案:

答案 0 :(得分:7)

这里只需要递归:

def convert(l):
    return tuple(convert(x) for x in l) if type(l) is list else l
>>> convert([1,3,'abc',[3,4,5]])
(1, 3, 'abc', (3, 4, 5))
>>> convert([[[[[[]]]]]])
((((((),),),),),)
>>> convert(42)
42

答案 1 :(得分:1)

使用isinstance()查看元素是否为列表:

In [64]: lis=[1,3,'abc',[3,4,5]]

In [66]: tuple(tuple(x) if isinstance(x,list) else x for x in lis)
Out[66]: (1, 3, 'abc', (3, 4, 5))