python - 试图在 python 中创建一个“折叠列表”?
问题描述
我需要制作一个“对半列表”,其中我将第一个和最后一个学期、第二个和第二个到最后一个学期、第三个和第三个到最后一个学期等相乘。
我知道如何制作列表以及如何从列表中打印特定值,但不了解如何在列表中进行这样的数学运算,而无需简单地键入每个数字并将它们相乘。
到目前为止,我只有一个包含六个项的列表(称为 a),虽然我知道如何将整数乘以整数,但我不知道如何制作这个“折叠”的东西。我最终需要制作某种循环吗?如果是这样,怎么做?
编辑:我应该指定我需要通过一个函数来实现它。有人通过一种非常有效的方法帮助我制作了一个,但是当我意识到它需要成为一个函数时,我再次尝试了它,但它不起作用。请参阅下面的代码。
a = [10, 14, 21, 25 ,52, 55]
print('starting list:', a)
查找列表的中间 len(a)//2
使用(我认为是)一个函数来制作第一个 + 最后一个术语的新列表,等等。术语 i 是从列表开头计算的术语,术语 -(i+1) 是从底部计算的术语名单
print(sum((a[i]) + (a[-(i + 1) ])) for i in range( len(a) // 2)
一个有效但不是函数的代码,因为它有括号 foldedlist=[ a[i] + a[-(i + 1) ] for i in range( len(a) // 2)] print('folded list :', 折叠列表)
解决方案
把你的清单,在这里:
l = [1, 2, 3, 4, 5, 6]
找到中间点(折叠发生的地方 - 你需要考虑这对于奇数长度列表是如何工作的)
l_mid = len(l) / 2
制作两个子列表,然后从中点开始
l1 = l[:l_mid]
l2 = l[l_mid:]
为输出创建一个容器,然后遍历两个列表,将后者反转并将产品附加到容器中。
output = []
for v1, v2 in zip(l1, reversed(l2)):
output.append(v1 * v2)
推荐阅读
- spring-boot - 如何修复“在根项目'genie-voucher-module'中找不到任务'build'”
- php - 使用 PhpSpreadsheet 从字符串创建 CSV 文件
- c# - 多线程和随机的奇怪行为
- excel - 为什么不能在 MS Excel 中重命名附件?
- android - 切换到插件 android gradle 3.3 时构建项目 io.realm.DefaultRealmModule 时出错
- angular - 用户单击按钮后,将数组以角度传递到下一页
- android - 我该如何解决这个错误?(我有 3 个 xml 文件和 1 个 java 类文件)
- python - 没有切片和导入的滚动/滑动窗口迭代器?
- c# - 在 C# 中,对于长音频,Speaker Diarization 始终返回零
- vue.js - 访问功能性 vuejs 组件的渲染函数内的数据