('M','R','A','B') is correct. I appreciate the correction. I did not look to see the content of what I created, just the type!
>>> a = tuple("first") >>> a ('f', 'i', 'r', 's', 't') >>> type(a) <class 'tuple'> But I thought adding a comma would help and it does not! >>> b = tuple("first",) >>> b ('f', 'i', 'r', 's', 't') Yet something this simple without invoking tuple(), works! >>> c = 'first', >>> c ('first',) So I read the manual page and tuple takes an iterable as an argument and treats a string as an iterator on characters! It is not a simple initializer. I got around it, sort of, using n array with a single object of type string in it so the iterator is iterating at a different level. >>> d = ["first"] >>> tuple(d) ('first',) >>> tuple(["first"]) ('first',) I understand the design choice and can imagine there may be another function that initializes a tuple more directly in some module. Returning to lurking mode ... -----Original Message----- From: Python-list <python-list-bounces+avigross=verizon....@python.org> On Behalf Of MRAB Sent: Sunday, September 20, 2020 7:35 PM To: python-list@python.org Subject: Re: Puzzling difference between lists and tuples On 2020-09-20 23:59, Avi Gross via Python-list wrote: > There is a simple and obvious way to make sure you have a tuple by invoking the keyword/function in making it: > >>>> a=('first') >>>> type(a) > <class 'str'> > >>>> a=("first",) >>>> type(a) > <class 'tuple'> > >>>> a=tuple("first") >>>> type(a) > <class 'tuple'> > > That seems more explicit than adding a trailing comma. It also is a simple way to make an empty tuple but is there any penalty for using the function tuple()? > [snip] >>> tuple("first") ('f', 'i', 'r', 's', 't') Not the same as ("first",). A simpler way to make an empty tuple is just (). -- https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list