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

如何不使用numpy生成包含1至n的二维列表?

不用Numpy生成1至n的二维列表解决方案

没问题!不用Numpy的话,咱们用Python基础语法就能轻松实现,核心逻辑就是把1到n的数字按指定的行数/列数逐行分组填充就行。我给你几种实用的实现方式:

方法一:直观双重循环(适合新手理解逻辑)

这是最容易看懂的写法,通过两层循环分别控制行数和每行的元素:

def create_matrix(rows, cols):
    matrix = []
    current_num = 1
    # 外层循环创建每一行
    for _ in range(rows):
        current_row = []
        # 内层循环填充当前行的每个元素
        for _ in range(cols):
            current_row.append(current_num)
            current_num += 1
        matrix.append(current_row)
    return matrix

# 生成示例中的4x4矩阵
matrix = create_matrix(4, 4)
print(matrix)
# 输出:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

逻辑很直白:从数字1开始,每填满一行的所有元素后,就把这行加入到最终的矩阵里,同时更新下一个要填充的数字。

方法二:列表推导式(简洁写法)

如果你喜欢更紧凑的代码,可以用嵌套列表推导式来实现,本质和上面的循环逻辑一样,但写法更优雅:

def create_matrix(rows, cols):
    # 外层推导式控制行,内层推导式生成每行的元素
    return [[i * cols + j + 1 for j in range(cols)] for i in range(rows)]

# 调用示例
matrix = create_matrix(4, 4)
print(matrix)

这里的计算公式i * cols + j + 1可以快速定位每个位置的数字:

  • i是当前行的索引(从0开始),i * cols就是当前行第一个数字的前一位
  • 加上j+1(j是列索引,从0开始)就能得到当前位置的准确数字

方法三:已知n生成方阵(比如示例的4x4)

如果你的需求是生成方阵(行数=列数),且已知总数字n,可以先计算行列数再生成:

import math

def create_square_matrix(n):
    rows = cols = int(math.sqrt(n))
    # 加个校验,确保n是完全平方数,避免生成不完整矩阵
    if rows * cols != n:
        raise ValueError("n必须是完全平方数才能生成方阵哦")
    return [[i * cols + j + 1 for j in range(cols)] for i in range(rows)]

# 用n=16生成4x4矩阵
matrix = create_square_matrix(16)
print(matrix)

这种写法会先通过平方根计算行列数,同时校验输入的n是否合法,避免出现行数和列数不匹配的问题。

不管用哪种写法,核心都是按行分组填充连续数字,完全不需要依赖Numpy就能实现你的需求~

内容的提问来源于stack exchange,提问作者Sagnik Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:18