y_series1 = [(z/(roe * g * B * (x ** 2)))
for z in Fh and for x in x_series]
我已分配roe
,g
,B
个值,z
和x_series
是列表。
答案 0 :(得分:1)
这可能是您尝试使用代码完成的任务:
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> roe, g, B = 1, 2, 3
>>> Fh, x_series = range(10, 20), range(20, 30)
>>> y_series_1 = [z / (roe * g * B * x ** 2) for z, x in zip(Fh, x_series)]
>>> len(y_series_1)
10
>>>
为了从Fh
和x_series
中提取值,您应该将zip
两者放在一起。如果您希望代码运行得更快,请将y_series_1
的创建替换为以下两行:
>>> product = roe * g * B
>>> y_series_1 = [z / (product * x * x) for z, x in zip(Fh, x_series)]
答案 1 :(得分:0)
您的问题有点不清楚,因为您的伪代码有两种可能的解释:
如果Fh
和x_series
是按索引彼此对应的元素列表,则可以使用zip
执行单个循环,从每个列表中获取一个元素:
y_series1 = [(z/(roe * g * B * (x ** 2))) for z, x in zip(Fh, x_series)]
结果与Fh
和x_series
的较短者的长度相同,但理想情况下,在这种情况下它们的长度相同。
您希望将一个列表的每个元素与另一个列表的每个元素相匹配。这基本上就像运行嵌套循环一样。您可以像这样生成1D结果:
y_series1 = [(z/(roe * g * B * (x ** 2))) for z in Fh for x in x_series]
结果将包含len(Fh) * len(x_series)
个元素。要制作2D数组,请包含另一组括号:
y_series1 = [[(z/(roe * g * B * (x ** 2))) for z in Fh] for x in x_series]
这样,结果将是len(x_series)
列表,其中包含每个元素中的len(Fh)
个子列表。