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

将二维处理的for循环转换为带join的嵌套推导式

将二维处理的for循环转换为带join的嵌套推导式

当然没问题!咱们可以把这段代码改成只用一个return语句的嵌套推导式写法,完全去掉那个累加用的lines变量,逻辑还和原来完全一致。

修改后的函数长这样:

def c_array_body_from_bytes(input_bytes):
    """Emit the provided bytes as the body of a C array."""
    return "\n".join(
        "".join(f"0x{b:02x}, " for b in input_bytes[i:i+12])
        for i in range(0, len(input_bytes), 12)
    ) + "\n"

简单解释下这个写法:

  • 内层的生成器表达式(f"0x{b:02x}, " for b in input_bytes[i:i+12])会把每一组12个字节转换成C风格的十六进制字符串,再用"".join()把它们拼接成一行的内容。
  • 外层的生成器表达式会遍历所有分组的起始索引,把每一行的内容收集起来,接着用"\n".join()把所有行连接成一个完整的字符串。
  • 最后加的+ "\n"是为了和原代码的输出保持一致——原循环里每处理一行都会加换行,所以最后一行末尾也会有个换行,这个写法刚好复刻了这个行为。

你可以测试一下调用print(c_array_body_from_bytes(range(64))),输出结果和原来的代码完全相同哦。

备注:内容来源于stack exchange,提问作者Charles Nicholson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:59:53