如何创建多维列表

2024-09-27 00:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想初始化一个多维列表。基本上,我想要一个10x10的网格——一个包含10个列表的列表,每个列表包含10个项目

每个列表值应初始化为整数0

在一行中执行此操作的明显方法:myList = [[0]*10]*10将不起作用,因为它会生成一个列表,其中包含对一个列表的10个引用,因此更改任何行中的项目都会更改所有行中的项目

我看到的文档谈到了使用[:]复制列表,但在使用乘法器时仍然不起作用:myList = [0]*10; myList = myList[:]*10myList = [[0]*10]*10具有相同的效果

除了创建一个myList.append()循环之外,有没有一种快速有效的方法来以这种方式初始化列表


Tags: 项目方法文档网格列表方式整数效果
3条回答

使用list comprehension可以非常有效地执行此操作:

a = [[0] * number_cols for i in range(number_rows)]

这是嵌套的list comprehension的作业

[[0 for i in range(10)] for j in range(10)]

我想我会添加一个答案,因为这个问题是针对一般的n维情况的,我认为还没有答案。您可以使用以下示例对任意数量的维度递归执行此操作:

n_dims = [3, 4, 5]

empty_list = 0
for n in n_dims:
    empty_list = [empty_list] * n

>>>empty_list
>>>[[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
   [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
   [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
   [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
   [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]]

相关问题 更多 >

    热门问题