You need to enable JavaScript to run this app. 如何提升Python for循环迭代效率?0x前缀值变量替换及数据类型疑问
优惠活动
大模型
产品
解决方案
定价
更多

如何提升Python for循环迭代效率?0x前缀值变量替换及数据类型疑问

问题解答

1. 0x开头写法的类型说明

0x是Python中十六进制整数的字面量标识,属于*整数(int)*类型,和十进制整数完全等价:

  • 0x0 = 十进制的0
  • 0x1 = 十进制的1
  • 0x2 = 十进制的2
    代码中[0x0]就是装了整数0的列表,和[0]效果没有任何区别,不需要额外拼接“0x”字符。你之前写[0xi]报错是因为这不是合法的Python语法,Python不会把i的数值自动替换到0x后面,这是语法层面不支持的写法。

2. 循环优化方案

你原有代码的重复逻辑完全可以通过嵌套一层小循环实现,不需要做任何字符串拼接、变量嵌套操作,直接用循环的整数值即可,优化后代码如下:

import time
# 原有外层循环不变
for i in range(0, 296, 1):
    time.sleep(5)
    # 嵌套循环实现0、1、2的遍历,替换重复代码
    for j in range(3):
        print(" ")
        bus.write_i2c_block_data(0x2C, 0x03, [j])
        bus.write_i2c_block_data(0x2C, 0x01, [j])
        data = bus.read_byte_data(0x2C, 0x01)
        res_1 = (data / 256.0 ) * 10.0
        data = bus.read_byte_data(0x2C, 0x03)
        res_2 = (data / 256.0 ) * 10.0
        # 如果你用的是Python3,需要把print改成带括号的写法:
        # print(f"Resistance Channel-0 : %.2f K" % res_1)
        # print(f"Resistance Channel-1 : %.2f K" % res_2)
        print "Resistance Channel-0 : %.2f K" % res_1
        print "Resistance Channel-1 : %.2f K" % res_2

优化说明

  • 执行效率和原有代码完全一致,没有额外性能损耗,同时消除了代码冗余,后续需要调整通信逻辑只需要修改一次即可
  • 你之前尝试的字符串拼接、%嵌套变量的方案都是冗余操作,本质上你需要的只是0、1、2三个整数值,直接遍历整数即可,不需要和“0x”字符做任何拼接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:15:04