__init__ with multiple list values

MRAB python at mrabarnett.plus.com
Sun Oct 30 15:30:38 EDT 2011


On 30/10/2011 15:02, Gnarlodious wrote:
> Initializing a list of objects with one value:
>
> class Order:
>   def __init__(self, ratio):
>    self.ratio=ratio
>   def __call__(self):
>    return self.ratio
>
> ratio=[1, 2, 3, 4, 5]
> Orders=[Order(x) for x in ratio]
>
>
> But now I want to __init__ with 3 values:
>
> class Order:
>   def __init__(self, ratio, bias, locus):
>    self.ratio=ratio
>    self.bias=bias
>    self.locus=locus
>   def __call__(self):
>    return self.ratio, self.bias, self.locus
>
> ratio=[1, 2, 3, 4, 5]
> bias=[True, False, True, False, True]
> locus=['A', 'B', 'C', 'D', 'E']
> Orders=[Order(x,y,z) for x,y,z in [ratio, bias, locus]]
>
>>>> ValueError: too many values to unpack (expected 3)
>
> How to do it?
>
Use 'zip':

Orders=[Order(x,y,z) for x,y,z in zip(ratio, bias, locus)]



More information about the Python-list mailing list