如何在 Python 中将嵌套列表转换为嵌套元组

时间:2021-05-20 14:02:49

标签: python list tuples list-comprehension

如何将这个 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,))

1 个答案:

答案 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,))