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

如何使用Python itertools实现嵌套列表矩阵的缩放操作?

基于itertools的二维条码矩阵缩放实现

你当前的嵌套列表推导式实现逻辑通顺,用itertools改写可以获得更简洁的核心逻辑,同时大矩阵场景下的执行效率也会更高。
你之前写的itertools版本只实现了行维度的重复,缺失了单行内元素按倍率复制的步骤,补上这层处理就能完成完整的宽高同步缩放。


核心缩放逻辑(无填充)

仅实现按整数缩放因子重复行与行内元素的核心逻辑,代码如下:

import itertools

def scale_matrix(matrix, scaling_factor):
    # 先生成宽度缩放后的行:每个元素重复scaling_factor次
    width_scaled_rows = (
        list(itertools.chain.from_iterable(itertools.repeat(cell, scaling_factor) for cell in row))
        for row in matrix
    )
    # 再做高度缩放:每个宽度缩放后的行重复scaling_factor次
    return list(itertools.chain.from_iterable(itertools.repeat(row, scaling_factor) for row in width_scaled_rows))

这段代码的执行效果和嵌套列表推导式的纯缩放逻辑完全一致:比如输入[[1,0],[0,1]]、缩放因子为2,会输出[[1,1,0,0],[1,1,0,0],[0,0,1,1],[0,0,1,1]]。


带居中填充的完整实现

和你现有代码的填充逻辑对齐,支持缩放后补填充位到目标宽高、内容居中:

def resize_barcode_matrix(matrix, target_width, target_height, scaling_factor, padding_char=0):
    # 先完成核心缩放
    core_matrix = scale_matrix(matrix, scaling_factor)
    core_height = len(core_matrix)
    core_width = len(core_matrix[0]) if core_height else 0

    # 计算各方向填充长度,和原有逻辑保持一致:单侧向下/向右取整
    pad_vertical = target_height - core_height
    pad_top = pad_vertical // 2
    pad_bottom = pad_vertical - pad_top

    pad_horizontal = target_width - core_width
    pad_left = pad_horizontal // 2
    pad_right = pad_horizontal - pad_left

    # 拼接顶部填充、带左右填充的核心内容、底部填充
    top_padding = ([padding_char] * target_width for _ in range(pad_top))
    bottom_padding = ([padding_char] * target_width for _ in range(pad_bottom))
    core_with_h_pad = (
        [padding_char] * pad_left + row + [padding_char] * pad_right
        for row in core_matrix
    )

    return list(itertools.chain(top_padding, core_with_h_pad, bottom_padding))

实现说明

  • 中间过程全部使用生成器处理,不会额外生成冗余的中间列表,大尺寸条码处理时内存占用更低
  • 核心的重复逻辑全部调用itertools的C层实现,同等数据量下比纯Python嵌套列表推导式执行速度更快
  • 填充规则和你现有代码完全兼容,不需要调整原有业务的对齐逻辑

如果需要保留独立的expand_height、expand_width函数结构,只需要把对应维度的重复、填充逻辑拆分即可,行内元素重复的部分就是宽度扩展的核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:36:30