嘿伙计们,我现在正在学习 matplotlib 和线性函数。所以我在 Codecademy 接到了这个任务:
“我们提供了斜率 m 和截距 b,它们似乎描述了您获得的收入数据。
创建一个新列表 y,其中包含月份中的每个元素,乘以 m 并添加到 b。
列表理解可能是最简单的方法!”
所以我的解决方案如下所示(为了简单起见,我将打印整个代码):
import codecademylib3_seaborn
import matplotlib.pyplot as plt
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
revenue = [52, 74, 79, 95, 115, 110, 129, 126, 147, 146, 156, 184]
#slope:
m = 10
#intercept:
b = 53
y = 0
for x in months:
y += m*x + b
plt.plot(months, revenue, "o")
plt.plot(months, y)
plt.show()
好吧,我不知道为什么,但如果我想绘制 y,它就不起作用。 所以我查了一下他们会做什么不同的事情,看起来像这样。他们改变了 y。
y = [m*x + b for x in months]
我不知道为什么会这样或者它是如何工作的。我认为不仅代码看起来很糟糕,而且语法也不正确。有人可以向我解释一下吗?
最佳答案
首先,代码的相关部分:
y = 0
for x in months:
y += m*x + b
这是累积 y
的一个值,而不是将值添加到列表中。
列表推导式 y = [m*x + b for x inmonths]
相当于:
y = []
for x in months:
temp = m*x + b
y.append(temp)
列表推导式是一种简写形式,可以更轻松地编写这种常见的循环,在该循环中,您可以根据现有列表中的值(月)创建新列表 (
)。y
)
关于python - 为什么 y = [m*x + b for x in Months] 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71820717/