<[EMAIL PROTECTED]> wrote: ... > > >>> d=deque([1,2,3]) > > >>> d[:] > > Traceback (most recent call last): > > File "<stdin>", line 1, in ? > > TypeError: sequence index must be integer > > >>> deque(d) > > deque([1, 2, 3]) > > >>> > > > > I.e., NOT all sequences implement the unreadable x[:] form. > > > > The way that DOES work with all sequences is typeyouwant(sequence). > > I'm sorry, I don't understand. Does deque return a sequence?
There is no universally accepted definition of what "is a sequence" in Python, but the deque type meets most criteria. > The doc says it returns a deque object, and without further info > I would not expect [:] to work. Is it a sequence because it has > the same methods as a sequence? Workable definitions are usually operational ones, yes. > Whatever, I gather my old book is outdated and the blessed > way now to (shallow) copy a sequence is (as you say) > "typeyouwant(sequence)" which I will make a note of. > > Thanks for updating me. You're welcome, but be aware that this is MY thesis and not all accept it. somesequencetype(someiterable) is a general way to make a new instance of type 'somesequencetype' and accepts a wide variety of types for arguments, namely all iterables. list(somelist) is slightly less compact than somelist[:] when you know you start with a list instance and want a shallow copy thereof, but I see no good reason to specialcase this occurrence AND use an unreadable idiom in it, when the nice, general, readable idiom is perfectly serviceable. Alex -- http://mail.python.org/mailman/listinfo/python-list