"boblat...@googlemail.com" <boblat...@googlemail.com> writes:
> Hello group, > > this is the conversion I'm looking for: > > ['1.1', '2.2', '3.3'] -> (1.1, 2.2, 3.3) > > Currently I'm "disassembling" the list by hand, like this: > > fields = line.split('; ') > for x in range(len(fields)): > fields[x] = float(fields[x]) > ftuple = tuple(fields) > > Of course it works, but it looks inelegant. Is there a more Pythonisch > way of doing this? You can create a tuple by calling the tuple type with an iterable, where each item from the iterable becomes an element in the created tuple. >>> tuple([4, 5, 6]) (4, 5, 6) You can create an iterable with a generator expression: >>> for n in (x**2 for x in range(5)): ... print n ... 0 1 4 9 16 Combine the two, creating a tuple from a generator expression: >>> fields = ['1.1', '2.2', '3.3'] >>> record = tuple( ... float(text) for text in fields) >>> record (1.1000000000000001, 2.2000000000000002, 3.2999999999999998) -- \ “Nothing so needs reforming as other people's habits.” —Mark | `\ Twain, _Pudd'n'head Wilson_ | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list