delete items from a set while iterating over it

First, using a set, as Zero Piraeus told us, you can

myset = set([3,4,5,6,2])
while myset:
    myset.pop()
    print(myset)

I added a print method giving these outputs

>>> 
set([3, 4, 5, 6])
set([4, 5, 6])
set([5, 6])
set([6])
set([])

If you want to stick to your choice for a list, I suggest you deep copy the list using a list comprehension, and loop over the copy, while removing items from original list. In my example, I make length of original list decrease at each loop.

l = list(myset)
l_copy = [x for x in l]
for k in l_copy:
    l = l[1:]
    print(l)

gives

>>> 
[3, 4, 5, 6]
[4, 5, 6]
[5, 6]
[6]
[]

This ought to work:

while myset:
    item = myset.pop()
    # do something

Or, if you need to remove items conditionally:

def test(item):
    return item != "foo"  # or whatever

myset = set(filter(test, myset))

Let's return all even numbers while modifying current set.

myset = set(range(1,5))
myset = filter(lambda x:x%2==0, myset)
print myset

Will return

>>> [2, 4]

If there is opportunity use always use lambda it will make your life easier.