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)]
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to