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

Python语法疑问:如何用紧凑嵌套循环实现顺序填充二维数组

用简洁嵌套语法实现递增二维数组生成

原函数crescentOrderArray1的功能是生成一个rows行columns列的二维数组,元素从1开始逐行逐列依次递增。

你尝试的crescentOrderArray2存在两个问题:

  • 嵌套推导式内层误用了range(rows),应该对应列数range(columns)
  • 直接引用count无法实现递增,推导式不会在迭代过程中修改外部变量的取值,所有元素都会是初始的1

下面提供两种符合你需求的简洁实现方式:

方式一:用迭代器维护递增计数

利用Python的迭代器特性,让计数自动递增:

def crescentOrderArray(rows, columns):
    count = iter(range(1, rows * columns + 1))
    return [[next(count) for _ in range(columns)] for _ in range(rows)]

原理:先创建一个从1到rows*columns的迭代器,每行推导式中调用next(count)取出下一个递增的数值,刚好填满一行的columns个元素。

方式二:用数学公式直接计算元素值

不需要额外变量,通过行列索引直接算出对应位置的数值:

def crescentOrderArray(rows, columns):
    return [[row * columns + col + 1 for col in range(columns)] for row in range(rows)]

原理:第row行(索引从0开始)的起始值是row*columns +1,每列col(索引从0开始)的数值就是起始值加上列索引,直接通过数学关系推导,代码更紧凑。

两种方式的输出结果和原函数完全一致,比如调用crescentOrderArray(3,4)会返回:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

内容的提问来源于stack exchange,提问作者Joao Pedro Barbosa Madeira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:05:21