Python でリストをタプルに変換する簡単な方法は次のとおりです。
tuple1=tuple(list1)
しかし、list1 に 1 つ以上のリストが含まれている場合、それらは同じままです。それらも変換できる方法はありますか?例えば
list1=[1,3,'abc',[3,4,5]]
に行く:
tuple1=(1,3,'abc',(3,4,5))
Python でリストをタプルに変換する簡単な方法は次のとおりです。
tuple1=tuple(list1)
しかし、list1 に 1 つ以上のリストが含まれている場合、それらは同じままです。それらも変換できる方法はありますか?例えば
list1=[1,3,'abc',[3,4,5]]
に行く:
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
>>> convert([1,3,'abc',[3,4,5]])
(1, 3, 'abc', (3, 4, 5))
>>> convert([[[[[[]]]]]])
((((((),),),),),)
>>> convert(42)
42
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))