用数组变量创建一个for循环Python [复制]

问题描述 投票:0回答:1

这个问题在这里已有答案:

所以基本上我必须:首先计算某个值'e'

be = b/(n+1)
h=np.arange(1,800,1)
e1 = (h*(h+t1))/(2*(be[1]+h))
e2 = (h*(h+t1))/(2*(be[2]+h)) 

'e'一直持续到25.你可以想象每次定义一个新的变量e#n都相当慢。我需要将所有这些值'e'放入不同的公式中:

Iyy1= ((1/12)*be[1]*t1**3 + be[1]*t1*e1**3) + ((1/12)*t1*h**3 + 0.25*t1*h**2 - t1*e1*h**2 + 0.25*(h**2)*(t1**2) + h*t1*e1**2 - 0.5*e1*h*t1**2)  + ((2/15)*h*t1**3 + ((2/5)*h*t1)*((t1+0.5*h)+(0.5*h-(e1-0.5*t1)))**2)

在这里,我需要用一系列'e'而不是'be'来做同样的事情。所以最后我必须得到25个阵列Iyy。我已经尝试了一些循环,但我无法解决这个问题(我是一个初学者)。任何人都可以帮忙吗?

python arrays loops for-loop
1个回答
0
投票

你可能想要使用lambda functionslist comprehension

func = lambda x: (h*(h+t1))/(2*(be[x]+h))

long_func = lambda x: ((1/12)*be[1]*t1**3 + be[1]*t1*x**3) + ((1/12)*t1*h**3 + 0.25*t1*h**2 - t1*x*h**2 + 0.25*(h**2)*(t1**2) + h*t1*x**2 - 0.5*x*h*t1**2)  + ((2/15)*h*t1**3 + ((2/5)*h*t1)*((t1+0.5*h)+(0.5*h-(x-0.5*t1)))**2)

Iyy_list = [long_func(func(x)) for x in range(1,26)]

Iyy_list将包含您的25个值,这是您的两个函数的结果。

使用range(1,26),我们生成1到25的数字。

生成的每个数字将作为x应用于第一个函数(因此它将是[x]的索引)

此函数的结果将应用于较长的函数,在x的每个位置。

索引的范围从1到25,但我不确定您是否知道在python中,列表从索引0开始。如果要从索引0开始,请使用range(25)而不是range(1, 26)

© www.soinside.com 2019 - 2024. All rights reserved.