Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列表转换为元组同时转换列表中的列表_Python_List_Type Conversion_Tuples - Fatal编程技术网

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

Python 将列表转换为元组同时转换列表中的列表,python,list,type-conversion,tuples,Python,List,Type Conversion,Tuples,在Python中,将列表转换为元组的简单方法如下: tuple1=tuple(list1) 但是,如果列表1包含一个或多个列表,它们将保持不变。有没有一种方法,我们可以转换他们以及? 例如 转到: tuple1=(1,3,'abc',(3,4,5)) 这里只需要递归: def convert(l): return tuple(convert(x) for x in l) if type(l) is list else l 这里只需要递归: def convert(l): r

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

tuple1=tuple(list1)
但是,如果列表1包含一个或多个列表,它们将保持不变。有没有一种方法,我们可以转换他们以及? 例如

转到:

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

这里只需要递归:

def convert(l):
    return tuple(convert(x) for x in l) if type(l) is list else l

这里只需要递归:

def convert(l):
    return tuple(convert(x) for x in l) if type(l) is list else l
使用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))
使用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))

递归的出色使用。它适用于低于递归限制的任何嵌套级别-这不是一个真正的问题。我认为isinstancel,list是首选。@mgilson:不确定。编辑。我认为,在这种情况下,您可能不想将列表派生类转换为元组。如果是这样,我建议使用typex is list只是为了更清楚地表明您只处理列表和列表。@Eric-是的,我认为在python中进行非常特定的类型检查是非常合适的;-。是指它们是同一个对象。==只是意味着它们在某种意义上是等价的,正如_; eq _;所定义的。在本例中,is和==做同样的事情,在我看来前者更显式。递归的出色使用。它适用于低于递归限制的任何嵌套级别-这不是一个真正的问题。我认为isinstancel,list是首选。@mgilson:不确定。编辑。我认为,在这种情况下,您可能不想将列表派生类转换为元组。如果是这样,我建议使用typex is list只是为了更清楚地表明您只处理列表和列表。@Eric-是的,我认为在python中进行非常特定的类型检查是非常合适的;-。是指它们是同一个对象。==只是意味着它们在某种意义上是等价的,正如_; eq _;所定义的。在这种情况下,is和==做同样的事情,在我看来前者更显式。list有内置的超类吗?没有,但类型可能不适用于list的子类。@Eric:Superclass?abc.types.ListType。子类,我不知道。list有内置的超类吗?没有,但类型可能不适用于list的子类。@Eric:超类?abc.types.ListType。子类,我不知道。