python - 为什么 y = [m*x + b for x in Months] 有效?

标签 python python-3.x matplotlib

嘿伙计们,我现在正在学习 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/

相关文章:

python - 使用 python(和 matplotlib?)将页面附加到现有的 pdf 文件

python - 在 matlibplot 中填充两个向量之间的区域

python - 如何在函数调用中将 DataFrame 解包为单独的系列?

python - 如何将 scrapy 图像下载到动态文件夹中?

python - 带有 TkAgg 错误 : PyEval_RestoreThread: null tstate on save_fig() - do I need threads enabled? 的 Matplotlib

javascript - 在 Python 中使用 java 脚本抓取网页

python - 树莓派 OpenCV 错误 : (-215) ni == ni1 in function collectCalibrationData

python-3.x - 在Python中转换黑白图像中1和0的列表列表

Python从具有重复键的列表创建嵌套字典

python 用 pandas 绘图