"Steve Holden" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > You are modifying the list as you iterate over it. Instead, iterate over > > a copy by using: > for ip in ips[:]:
Or if you are only deleting items, you can iterate backwards. You can also build a new list with only the items you want. Do this either with an explicit loop or even better, use filter or a list comp. ips = ['255.255.255.255', '128.173.120.79', '198.82.247.98', '127.0.0.1', '255.0.0.0', '255', '128.173.255.34'] # 2.2 requires single char for 'not in string' test ips2 = [] for ip in ips: if ip.find('255') == -1: ips2.append(ip) print ips2 print filter(lambda ip: ip.find('255') == -1, ips) print [ip for ip in ips if ip.find('255') == -1] # thrice prints ['128.173.120.79', '198.82.247.98', '127.0.0.1'] This seems much more sensible to me than building a new list with everything (a copy), including things you don't want, and then deleting the things you don't want (an O(n**2) operation). Terry J. Reedy -- http://mail.python.org/mailman/listinfo/python-list