使用列表推导表达式使用对象填充列表

kyo*_*ryu 3 python list-comprehension

我试图使用一个列表推导表达式填充8个Ingredient对象的列表.代码看起来像这样:

import random
ings = (('w1', 200, 25, 80),
   ('su1', 50, 55, 150),
   ('su2', 400, 100, 203),
   ('sy1', 10, 150, 355),
   ('sy2', 123, 88, 101),
   ('sy3', 225, 5, 30),
   ('sy4', 1, 44, 99),
   ('sy5', 500, 220, 300),)

class Ingredient: 
    def __init__(self, n, p, mi, ma):
        self.name = n
        self.price = p
        self.min = mi
        self.max = ma
        self.perc = random.randrange(mi, ma)

class Drink:
    def __init__(self): 
        self.ing = []
Run Code Online (Sandbox Code Playgroud)

我想获得相当于此的结果:

self.ing = [Ingredient('w1', 200, 25, 80), Ingredient('su1', 50, 55, 150) ... 
(and so it goes for the ings tuple) ]
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是如何使用LCE或者是否有更优化的方法(在代码可读性或速度方面)?

yos*_*bai 7

[Ingredient(*ing) for ing in ings]
Run Code Online (Sandbox Code Playgroud)