python - 使用数学运算在列表中迭代
问题描述
我有测试清单
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])
输出:
1
2
3
但是我知道如何将它们添加到我的数学运算代码中
解决方案
您可以创建一个操作字典来执行并将它们应用于您的列表的一部分。这需要 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)
输出:
[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
推荐阅读
- angular - Angular 说不是已知元素,但正在导入共享模块
- java - 如何使用 Java 函数存储数据湖 gen2?
- datetime - Ballerina 中的日期验证
- flutter - Flutter TypeAheadFormField建议列表在flutter中验证后没有定位
- vue.js - Vuetify 工具提示防止“v-if”组件重新出现
- python - 如何显示从 django admin 上传到 heroku 的图像?
- azure - ARM 模板验证失败
- android - 使用 MVVM 在 RecyclerView 的 Grid 和 Linear 之间切换的更好方法是什么?
- python - python中的输入输出变量
- grep - grep 搜索二进制数据