Python列表推导式报float不可迭代错误如何兼容单值场景
解决方案
直接在列表推导式的迭代对象位置加入类型判断,对单值float做包装即可,代码如下:
# 如果你存多值用的是元组,就用这个写法 i_lst = [int(i) for i in (sig2 if isinstance(sig2, tuple) else (sig2,))] # 如果多值也可能存在列表类型,调整类型判断范围即可 i_lst = [int(i) for i in (sig2 if isinstance(sig2, (list, tuple)) else (sig2,))]
逻辑说明
- 迭代前先对
sig2做类型校验:如果是存储多值的列表/元组类型,直接作为迭代对象使用 - 如果判定为单值float类型,就将其放入单元素元组
(sig2,)中,转为可迭代对象再处理,就不会触发类型报错 - 注意单元素元组末尾的逗号不能省略,否则不会被识别为元组类型
效果验证
- 当
sig2 = 1039.0时,最终得到结果[1039] - 当
sig2 = (1034.0, 1035.0, 1036.0)时,最终得到结果[1034, 1035, 1036]
内容的提问来源于stack exchange,提问作者Py2801
相关产品推荐
相关产品推荐

