能否将长度为n的字符串的每个字符动态赋值给n个对应变量?
最优方案:使用列表存储(推荐)
不需要单独创建m_1到m_n的独立变量,直接用列表存储所有值,访问时通过索引取值即可,写法简单且易于维护:
binary_str = "10110" m = [int(c) for c in binary_str] # 第k个字符对应m[k-1],比如原需求的m_1对应m[0],m_2对应m[1]
如果需要更贴近m_k的调用习惯,也可以用字典存储:
binary_str = "10110" m = {f"m_{idx}": int(val) for idx, val in enumerate(binary_str, start=1)} # 调用时直接写m["m_1"]、m["m_2"]即可
特殊场景:动态创建独立变量
如果确实必须生成m_1到m_n的全局独立变量,可以通过修改globals()字典实现:
binary_str = "10110" for idx, val in enumerate(map(int, binary_str), start=1): globals()[f"m_{idx}"] = val # 后续可直接调用变量:print(m_1) 输出 1,print(m_2) 输出 0
注意:该方案会污染全局命名空间,后续遍历、校验变量的成本远高于列表/字典方案,非必要不推荐使用。
内容的提问来源于stack exchange,提问作者ZR-
相关产品推荐
相关产品推荐

