欢迎访问宙启技术站
智能推送

使用newlist_hint()函数快速生成多维列表的技巧

发布时间:2023-12-24 12:32:02

newlist_hint()函数可以快速生成多维列表,它可以根据给定的维度和元素类型生成指定形状的列表。在Python中,可以使用列表推导式来实现多维列表的创建,但是对于高维度的列表来说,代码往往显得冗长且不易阅读。

函数定义如下:

def newlist_hint(dimensions, element_type=None):
    if not isinstance(dimensions, list):
        raise ValueError("Dimensions must be a list.")
    if len(dimensions) == 0:
        return []
    length = dimensions[0]
    if element_type is None:
        element_type = []
    return [newlist_hint(dimensions[1:], element_type) for _ in range(length)]

使用例子如下:

# 生成一个3x3的二维列表
list_2d = newlist_hint([3, 3])
print(list_2d)

# 生成一个2x4x3的三维列表
list_3d = newlist_hint([2, 4, 3])
print(list_3d)

# 生成一个2x2x2x2的四维列表
list_4d = newlist_hint([2, 2, 2, 2])
print(list_4d)

运行结果:

[[[], [], []], [[], [], []], [[], [], []]]
[[[[], [], []], [[], [], []], [[], [], []], [[], [], []]], [[[], [], []], [[], [], []], [[], [], []], [[], [], []]]]
[[[[[], []], [[], []]], [[[], []], [[], []]]], [[[[], []], [[], []]], [[[], []], [[], []]]]]

上述例子中,newlist_hint()函数通过递归的方式生成了对应维度的多维列表。在调用函数时,需要传入一个维度的列表,element_type参数用于指定每个元素的类型,默认为None,也可以手动指定。函数会根据给定的维度和element_type逐层生成列表,直到达到最后一维时返回一个空列表。最后,通过列表推导式生成整个多维列表。

使用newlist_hint()函数可以快速生成多维列表,减少了大量的冗余代码,提高了代码的可读性和可维护性。这在处理数据集、图像数组等高维度数据时特别有用。