有没有一种快速而简单的方法来覆盖与另一个列表(长度相同)中的元素相对应的列表中的元素?在
iterates = input("How many iterates: ")
trials = input("How many trials: ")
aggregateList = [iterates]
def function():
recordList = []
for i in range(iterates):
# math goes here
recordList.append()
aggregateList[i] += recordList[i]
for i in range(trials):
function()
问题出在aggregateList[i] += recordList[i]
还有什么别的办法可以解决吗?假设recordList[i]中第一次“迭代”的值是5,第二次是5,第三次是5,此时aggregateList[i]应该是15。在
我想你要找的是:
或者
^{pr2}$取决于您希望聚合是平面的还是嵌套的。在
并将
aggregateList = [iterates]
更改为aggregateList = []
。在我个人会这样做:
甚至:
假设您有一个列表列表(在变量名列表中)。这是在您调用了'function()'函数(顺便说一下,不是最好的函数名)并将记录列表收集到一个列表之后。在
会输出
^{pr2}$我想这就是你要找的解决方案。在
reduce是函数式编程中的一个有趣的函数。它允许您将匿名函数lambda连续应用于列表项,然后返回累积值。所以在这个例子中,它是预成型(1+4)+7,(2+5)+8,(3+6)+9。我们应用reduce的列表是通过理解从列表内部的列表中提取i来构建的。reduce调用被包装在另一个理解中以返回结果列表。在
所以
iterates
是一个类似4的数字,trials
是另一个类似3的数字。在现在
^{pr2}$aggregateList = [4]
。那是什么目的?在你在
recordList
上附加了什么?最后一行应该产生如下错误:append() takes exactly one argument (0 given)
此时
i
是什么?上述迭代的最后一个值,即iterates-1 =3
,或者应该是trials
迭代器。此时您希望aggregateList
有多少项?正如我所写的,我希望它给出一个错误:IndexError: list assignment index out of range
。在什么是“问题”?您收到了什么错误消息或错误结果?在
我怀疑您对另一种语言比较熟悉,并尝试将它的习惯用法应用于Python。另外,在担心效率之前,先让计算生效。在某些情况下,尽管您可能希望使用
numpy
来添加数组,以及一次对整个数组进行运算的能力。在相关问题 更多 >
编程相关推荐