What is the meaning of list[:] in this code?
An iterable is an object that has an __iter__ method which returns an
iterator, or which defines a __getitem__ method that can take
sequential indexes starting from zero (and raises an IndexError when
the indexes are no longer valid). So an iterable is an object that you
can get an iterator from.