You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写无外部依赖的d维整数网格坐标元组生成函数

实现d维整数网格坐标集合生成函数

问题需求

编写函数intGrid(n, dim),接收两个参数:

  • n:每个维度上的域点数(要求n ≥ 1)
  • dim:网格的维度数
    函数需返回一个集合,包含该d维整数网格的所有坐标点元组。例如调用intGrid(n=2, dim=2)时,返回结果为{(0,0), (0,1), (1,0), (1,1)}。

限制:禁止使用numpy或其他第三方外部库,仅可使用Python内置功能/标准库。


解决方案1:利用标准库itertools.product

itertools.product可以直接生成多个可迭代对象的笛卡尔积,完美匹配d维网格的坐标生成逻辑——每个维度的取值范围是0到n-1,所有维度的组合就是网格的全部点。

import itertools

def intGrid(n, dim):
    # 构造每个维度的取值范围列表
    axis_ranges = [range(n)] * dim
    # 生成笛卡尔积并转换为集合返回
    return set(itertools.product(*axis_ranges))

解决方案2:手动递归实现(无额外库依赖)

如果不想依赖itertools,可以通过递归逐步构建高维度网格:从1维网格出发,d维网格的每个点都是d-1维网格的点拼接一个新维度的取值。

def intGrid(n, dim):
    # 处理1维的基础情况
    if dim == 1:
        return {(num,) for num in range(n)}
    # 递归获取低一维的网格集合
    lower_dim_points = intGrid(n, dim - 1)
    # 扩展每个低维点,添加新维度的所有可能值
    full_grid = set()
    for point in lower_dim_points:
        for val in range(n):
            full_grid.add(point + (val,))
    return full_grid

测试验证

调用示例:

print(intGrid(n=2, dim=2))
# 输出:{(0, 0), (0, 1), (1, 0), (1, 1)}

print(intGrid(n=1, dim=3))
# 输出:{(0, 0, 0)}

两种方案均能正确处理所有合法输入,满足需求。

内容的提问来源于stack exchange,提问作者John Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:20:20