如何将这个 3D 列表转换为元组?
[[[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]],
[[0, 0], [0, 0]],
[100]]
我使用此代码:
tuple(tuple(tuple(j for j in i) for i in x))
但我仍然有 [] 在结果中
(([0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]),
([0, 0], [0, 0]),
(100,))
答案 0 :(得分:3)
我的理解是您只想将嵌套列表转换为嵌套元组。如果这是您的需要,那么您可能需要想出一种递归方法来处理您拥有任意数量嵌套列表的情况。
例如
def nested_list_to_tuple_recur(nested_list):
return tuple(
nested_list_to_tuple_recur(l) if isinstance(l, list)
else l for l in nested_list
)
最后调用函数:
nested_list_to_tuple_recur(x)
输出将是
(((0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0)),
((0, 0), (0, 0)),
(100,))