Alex Martelli wrote: > Bill Mill <[EMAIL PROTECTED]> wrote: > ... >> > > You are modifying the list as you iterate over it. Instead, iterate over >> > > a copy by using: >> > > >> > > for ip in ips[:]: > ... >> Once you know it, it's neat, and I use it sometimes. However, it's a >> little too "magical" for my tastes; I'd rather be more explicit about >> what's going on. > > Using ips[:] to make a copy on the fly is very idiomatic, but I've never > liked it, personally. I see no reason to prefer it to the even shorter > and arguably less obscure ips*1, for example.
"Less obscure"? Either you know the `lst[:]' idiom, or you don't. If you do, it's fine, if you don't, you will have to look it up to understand its meaning, and that's a good thing. Using `lst*1', on the other hand, does not make clear that a copy is created. If you don't already know what it does, you may assume that `lst' is left alone. > My preference is: > > for ip in list(ips): That is the most intriguing variant, of course. Reinhold -- http://mail.python.org/mailman/listinfo/python-list