我有一個(gè)浮點(diǎn)數(shù)列表,我想刪除大于某個(gè)數(shù)字或小于某個(gè)(不同)數(shù)字的元素。這是我到目前為止的代碼: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)但這并不像我預(yù)期的那樣工作。當(dāng)我在此處可視化此代碼時(shí):http://www.pythontutor.com/visualize.html,它似乎正在跳過被刪除的元素之后的元素。我看不出為什么我的代碼會(huì)出現(xiàn)這種情況。PS 我知道我可以使用 做我想做的事情np.where,但我想知道為什么我當(dāng)前的代碼不起作用。
1 回答

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
您在迭代列表時(shí)正在修改列表。做一個(gè)列表理解:
[i for i in a if not (i < 30 or i > 200)]
添加回答
舉報(bào)
0/150
提交
取消