[BangPypers] Unpacking Tuple

Noufal Ibrahim noufal at nibrahim.net.in
Sat Oct 6 12:57:10 CEST 2012


All of these are clever but I'd be very annoyed if I saw them in serious
production code. I'd recommend that you rethink your original code. If
there are varying length tuples that you're passing in which you need
assigned to variables, it might make more sense to use a dictionary. a,
b, c and d will be keys. 

veerabahu subramanian <veechand at gmail.com> writes:

> Something similar to Noufal's but with out using itertools...
>
>>>> s=(1,2,3,4)
>>>> a,b,c,d = s + (None,)*(4-len(s))
>>>> print a,b,c,d
> 1 2 3 4
>>>> s=(1,)
>>>> a,b,c,d = s + (None,)*(4-len(s))
>>>> print a,b,c,d
> 1 None None None
>
> Regards
> Veerabahu
>
> On Sat, Oct 6, 2012 at 4:17 PM, Noufal Ibrahim <noufal at nibrahim.net.in>wrote:
>
>> Saju M <sajuptpm at gmail.com> writes:
>>
>> > Hi,
>> >
>> > I am using python 2.6.
>> >
>> > I need a way to make following code working without any ValueError .
>> >>>> a, b, c, d = (1,2,3,4)
>> >>>> a, b, c, d = (1,2,3).
>>
>> This is crude but fun. I wouldn't do it in anything serious program though.
>>
>> > import itertools
>> >
>> > a, b, c, d = list(itertools.chain(input_tuple, itertools.repeat(None,
>> 4)))[:4]
>>
>> If your input tuple has 4 values, you'll get them in the 4 variables.
>>
>> If your input tuple has less (say 3), you'll get a, b and c. d will be
>> set to None.
>>
>> If your input tuple has more than 4, the remaining will be ignored.
>>
>> --
>> Cordially,
>> Noufal
>> http://nibrahim.net.in
>> _______________________________________________
>> BangPypers mailing list
>> BangPypers at python.org
>> http://mail.python.org/mailman/listinfo/bangpypers
>>
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> http://mail.python.org/mailman/listinfo/bangpypers
>

-- 
Cordially,
Noufal
http://nibrahim.net.in


More information about the BangPypers mailing list