I know it is maybe a duplicate question. But due to my poor English expression,I don't know how to search it.
Recently I find a problem in python list.remove,Here is the code:
data = []
for i in range(1000):
    Tempdict = {}
    Tempdict["code"] = str(i)
    data.append(Tempdict)
codes_to_keep = ("1","8","80")
for i in data:
    if not i["code"] in codes_to_keep:
        data.remove(i)
print(data) #{"code":"1","code":"3","code":"5".......},it will keep odd number leave.
Or if I use this to delete number which need to be de:
data = []
for i in range(1000):
    Tempdict = {}
    Tempdict["code"] = str(i)
    data.append(Tempdict)
codes_to_delete = ("1","8","80")
for i in data:
    if i["code"] in codes_to_delete:
        data.remove(i)
print(data) #{"code":"0","code":"2"xxx},This is what I expected 
What happened?
 
     
    