为了账号安全,请及时绑定邮箱和手机立即绑定

尝试从列表中删除时跳过元素

尝试从列表中删除时跳过元素

BIG阳 2021-07-02 05:56:30
我有一个浮点数列表,我想删除大于某个数字或小于某个(不同)数字的元素。这是我到目前为止的代码:a = ['239.12835442230858', '22.756759356300982', '32.98715001831536', '460.11899977144816', '747.5029387021966', '25.97292253382583', '150.94457242947556', '197.14098031753895', '394.44390781374057', '320.11301380981826', '138.66237294322895', '87.7095435481745', '427.8799219223041', '445.9006435386053', '62.716459379313704', '259.19872485615906', '212.75590521862267', '455.3882240904654', '259.07638854400676', '425.90576134140446']print type(a[0])for i, val in enumerate(a):    a[i] = float(val)print type(a[0])for i in a:    if i < 30 or i > 200:        a.remove(i)但这并不像我预期的那样工作。当我在此处可视化此代码时:http://www.pythontutor.com/visualize.html,它似乎正在跳过被删除的元素之后的元素。我看不出为什么我的代码会出现这种情况。PS 我知道我可以使用 做我想做的事情np.where,但我想知道为什么我当前的代码不起作用。
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

您在迭代列表时正在修改列表。做一个列表理解:

[i for i in a if not (i < 30 or i > 200)]


查看完整回答
反对 回复 2021-07-06
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信