[英]iteration in list with math operations
我有测试清单
a = [1,2,3,4,5,6,7,8,9,10]
例如,我想将其中一些平方并得到它们的总和。 然后我想将此总和除以2
。 然后我想提高到1/4
的幂
代码是:
result = ((a[0]**2+a[1]**2)/2)**(1/4)
问题是我定义了每个值。 在这个例子中,它a[0]
和a[1]
我只想获得一些可迭代对象数量的变量(在我的情况下是n = 2
)
对于n = 3
,它应该等于:
((a[0]**2+a[1]**2+a[2]**2)/2)**(1/4)
我可以得到这个值
for i in range(3):
print(a[i])
与 output:
1
2
3
但是我知道如何将它们添加到我的数学运算代码中
这应该这样做:
square=0
for i in range(3):
square=square+a[i]**2
if i==2:
square=(square/2)**(1/4)
print(square)
这将每个数字平方并将其添加到square
变量。 如果它在 i 的最后一次迭代,它将square
除以 2 并将其提高到 1/4 的幂
您可以创建一个操作字典来执行并将它们应用于您的列表的一部分。 这需要 python 3.7+ 来保证 dict 中规则的插入顺序 == 它们稍后应用的顺序:
a = [1,2,3,4,5,6,7,8,9,10]
# rules
ops = {"square_list" : lambda x: [a**2 for a in x], # creates list
"sum_list" : lambda x : sum(x), # skalar
"div_2" : lambda x : x/2, # skalar
"**1/4" : lambda x: x**(1/4)} # skalar
n_min = 0
for m in range(1,len(a)):
# get list part to operate on
parts = a [n_min:m]
print(parts)
# apply rules
for o in ops:
parts = ops[o](parts)
# print result
print(parts)
Output:
[1]
0.8408964152537145
[1, 2]
1.2574334296829355
[1, 2, 3]
1.6265765616977856
[1, 2, 3, 4]
1.9679896712654303
[1, 2, 3, 4, 5]
2.2899878254809036
[1, 2, 3, 4, 5, 6]
2.597184780029334
[1, 2, 3, 4, 5, 6, 7]
2.892507608519078
[1, 2, 3, 4, 5, 6, 7, 8]
3.1779718278112656
[1, 2, 3, 4, 5, 6, 7, 8, 9]
3.4550450628484315
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.