Paul McGuire <[EMAIL PROTECTED]> wrote:
> On Nov 6, 4:08 am, Dustan <[EMAIL PROTECTED]> wrote:
>> On Nov 6, 3:58 am, Duncan Booth <[EMAIL PROTECTED]> wrote:
>>
>> > Wildemar Wildenburger <[EMAIL PROTECTED]> wrote:
>> > > maybe something like this could help:
>>
>> > > def tupleize(non_tuple):
>> > > try:
>> > > return tuple(tupleize(thing) for thing in non_tuple)
>> > > except TypeError:
>> > > # non_tuple is not iterable
>> > > return non_tuple
>>
>> > Just don't try passing that a string or anything containing a
string.
>>
>> Untested
>>
>> def tupleize(non_tuple):
>> if isinstance(non_tuple, str):
>> return non_tuple
>> try:
>> return tuple(tupleize(thing) for thing in non_tuple)
>> except TypeError:
>> # non_tuple is not iterable
>> return non_tuple
>
>
> isinstance(x,basestring)
>
> is preferred over
>
> isinstance(x,str)
>
> in case x is a unicode.
Better, just don't try passing it a recursive data structure.
>>> a = [1, 2, 3]
>>> a[1] = a
>>> a
[1, [...], 3]
>>> tupleize(a)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
tupleize(a)
File "<pyshell#1>", line 5, in tupleize
return tuple(tupleize(thing) for thing in non_tuple)
File "<pyshell#1>", line 5, in <genexpr>
return tuple(tupleize(thing) for thing in non_tuple)
File "<pyshell#1>", line 5, in tupleize
return tuple(tupleize(thing) for thing in non_tuple)
File "<pyshell#1>", line 5, in <genexpr>
return tuple(tupleize(thing) for thing in non_tuple)
File "<pyshell#1>", line 5, in tupleize
return tuple(tupleize(thing) for thing in non_tuple)
...
--
http://mail.python.org/mailman/listinfo/python-list