use*_*930 3 python sequences list-comprehension list
我正在运行列表理解数字列表作为字符串,所以例如列表看起来像这样
vals = ['0.13', '324', '0.23432']
Run Code Online (Sandbox Code Playgroud)
并尝试这样的列表理解:
best = [x for x in vals > 0.02]
Run Code Online (Sandbox Code Playgroud)
我得到一个TypeError:迭代非序列.
列表不是一个应该是您应该能够迭代的第一个序列吗?什么是序列?
我找到的基本问题很难找到答案.
谢谢.
您需要检查每个项目是否大于'0.02',而不是序列是否更大.
best = [x for x in vals if x > '0.02']
Run Code Online (Sandbox Code Playgroud)
您的原始表达式[x for x in vals > '0.02']被解析为[x for x in (vals > '0.02')].由于vals > '0.02'是布尔值,而不是序列,因此无法对其进行迭代.
编辑:我更新了这个答案,'0.02'在评论中使用每个Joe的建议字符串(谢谢).这适用于这种情况,但如果你真的想要进行数字比较而不是字典比较,你可以使用:
best = [x for x in vals if float(x) > 0.02]
Run Code Online (Sandbox Code Playgroud)
这会转换x为float,以便您可以按照预期将浮点数与另一个浮点数进行比较.列表理解的结果仍然是字符串列表,因为我们正在收集[x for ...]而不是[float(x) for ...].只是一些值得思考的东西.
| 归档时间: |
|
| 查看次数: |
2108 次 |
| 最近记录: |