__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