使用列表推导式填充对象列表
我正在尝试用一个列表推导式来创建8个食材对象的列表。代码大概是这样的:
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 = []
我希望得到的结果是这样的:
self.ing = [Ingredient('w1', 200, 25, 80), Ingredient('su1', 50, 55, 150) ...
(and so it goes for the ings tuple) ]
现在,我的问题是如何用列表推导式来实现这个,或者有没有更好的方法可以做到这一点(比如在代码可读性或速度方面)?
3 个回答
0
这段代码的作用是……
首先,它会做一些准备工作,比如设置一些变量或者初始化一些东西。接着,它会进入一个循环,这个循环会重复执行某些操作,直到满足特定的条件为止。
在循环中,代码会检查一些情况,并根据这些情况来决定接下来要做什么。可能会有一些条件判断,比如如果满足某个条件,就执行某个操作,否则就执行另一个操作。
最后,当循环结束后,代码会返回一个结果,或者执行一些清理工作,确保程序能够正常结束。
总的来说,这段代码就是在做一些重复的工作,直到达到预定的目标。希望这个解释能帮助你理解这段代码的基本思路!
self.ing = [Ingredient(*options) for options in ings]
1
你应该直接创建 Ingredient
的实例,而不是先定义元组再去转换它们。
import random
class Ingredient:
def __init__(self, name, price, min, max):
self.name = name
self.price = price
self.min = min
self.max = max
self.perc = random.randrange(self.min, self.max)
ingredients = [
Ingredient('w1', 200, 25, 80),
Ingredient('su1', 50, 55, 150),
Ingredient('su2', 400, 100, 203),
Ingredient('sy1', 10, 150, 355),
Ingredient('sy2', 123, 88, 101),
Ingredient('sy3', 225, 5, 30),
Ingredient('sy4', 1, 44, 99),
Ingredient('sy5', 500, 220, 300),
]
10
这段代码是用来处理一些数据的。它可能涉及到从一个地方获取数据,然后对这些数据进行一些操作,最后再把结果输出。具体来说,代码块中的内容可能包括如何读取数据、如何进行计算,以及如何显示结果。
如果你是编程新手,可以把这看作是一个简单的食谱:首先准备好材料(数据),然后按照步骤(代码)进行处理,最后得到你想要的成品(结果)。
记住,代码中的每一行都有它的作用,就像做饭时每一步都很重要。即使是看起来简单的操作,也可能在整个过程中起到关键作用。
[Ingredient(*ing) for ing in ings]