Alan said -
> Its bad practice to delete a member in the collection being iterated
> but Python copes OK if you just change the current item.

Yeah, that's very bad. Makes for all sorts of subtle errors. I usually
do the iteration as a for i in range(len(someList) type thing, and
collect the indexes - like so

j=[1, 2,3,4, 5,6,7,8]
delIndexes=[]

for index in range(len(j)):
     if not j[index] % 2:
        delIndexes.append(index)

delIndexes.reverse()
for item in delIndexes:
     del(j[item])

print j

[1, 3, 5, 7]

Although, (and this will be rough) a list comprehension would be
probably do the same thing
j=[1, 2,3,4, 5,6,7,8]

q = [if not item % 2 for item in j]

I really think I've got that 'if not item % 2' wrong, as I can't test
it, but I'd be hoping for
print q
[1, 3, 5, 7]



-- 
'There is only one basic human right, and that is to do as you damn well please.
And with it comes the only basic human duty, to take the consequences.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to