如果我有
easy_nested_list = [['foo', 'bar'], ['foofoo', 'barbar']]
并希望
(('foo', 'bar'), ('foofoo', 'barbar'))
我能做到
tuple(tuple(i) for i in easy_nested_list)
但如果我有
mixed_nested_list = [['foo', 'bar'], ['foofoo', ['foo', 'bar']],'some', 2, 3]
并且想要建立一个元组,我不知道如何开始。
很高兴获得:
(('foo', 'bar'), ('foofoo', ('foo', 'bar')), 'some', 2, 3)
第一个问题是Python将我的字符串转换为每个字符的元组。第二件事是我得到了
TypeError: 'int' object is not iterable
答案 0 :(得分:9)
递归转换,并测试列表:
def to_tuple(lst):
return tuple(to_tuple(i) if isinstance(i, list) else i for i in lst)
这会为给定列表生成一个元组,但会使用递归调用转换任何嵌套的list
对象。
演示:
>>> def to_tuple(lst):
... return tuple(to_tuple(i) if isinstance(i, list) else i for i in lst)
...
>>> mixed_nested_list = [['foo', 'bar'], ['foofoo', ['foo', 'bar']],'some', 2, 3]
>>> to_tuple(mixed_nested_list)
(('foo', 'bar'), ('foofoo', ('foo', 'bar')), 'some', 2, 3)