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

Bil*_*nde 1 python tuples list type-conversion

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

tuple1=tuple(list1)
Run Code Online (Sandbox Code Playgroud)

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

list1=[1,3,'abc',[3,4,5]]
Run Code Online (Sandbox Code Playgroud)

去:

tuple1=(1,3,'abc',(3,4,5))
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 7

你需要的是递归:

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

  • 我认为`isinstance(l,list)`是首选. (2认同)
  • @Eric - 是的,我是这么认为的(只要在python中做一个非常具体的类型检查是合适的;-).`is`意味着它们是同一个对象.`==`只是意味着它们在某种意义上是等价的(由`__eq__`定义).在这种情况下,`is`和`==`做同样的事情,前者更明确(在我看来). (2认同)