Python重写列表元素

2024-06-28 14:54:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种快速而简单的方法来覆盖与另一个列表(长度相同)中的元素相对应的列表中的元素?在

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。在


Tags: 方法in元素列表forinputdefrange
3条回答

我想你要找的是:

aggregateList += recordList

或者

^{pr2}$

取决于您希望聚合是平面的还是嵌套的。在

并将aggregateList = [iterates]更改为aggregateList = []。在

我个人会这样做:

iterates = input("How many iterates: ")
trials = input("How many trials: ")

def function():
    recordList = []

    for i in range(iterates):
        # math goes here
        recordList.append()

    return recordList

aggregateList = []
for i in range(trials):
    aggregateList.append(function())

甚至:

def calculate (i): pass #math goes here
#nested:
aggregateList = [[calculate(i) for i in range(iterates)] for _ in range(trials)]
#flat:
aggregateList = [x for trial in ([calculate(i) for i in range(iterates)] for _ in range(trials)) for x in trial]

假设您有一个列表列表(在变量名列表中)。这是在您调用了'function()'函数(顺便说一下,不是最好的函数名)并将记录列表收集到一个列表之后。在

trials = 3
lists = [[1,2,3],[4,5,6],[7,8,9]]

for i in range(trials):
    aggregateList = [reduce(lambda x, y: x+y, [listn[i] for listn in lists]) for i in range(trials)]

print aggregateList

会输出

^{pr2}$

我想这就是你要找的解决方案。在

reduce是函数式编程中的一个有趣的函数。它允许您将匿名函数lambda连续应用于列表项,然后返回累积值。所以在这个例子中,它是预成型(1+4)+7,(2+5)+8,(3+6)+9。我们应用reduce的列表是通过理解从列表内部的列表中提取i来构建的。reduce调用被包装在另一个理解中以返回结果列表。在

所以iterates是一个类似4的数字,trials是另一个类似3的数字。在

aggregateList = [iterates]

现在aggregateList = [4]。那是什么目的?在

^{pr2}$

你在recordList上附加了什么?最后一行应该产生如下错误:append() takes exactly one argument (0 given)

    aggregateList[i] += recordList[i]

此时i是什么?上述迭代的最后一个值,即iterates-1 =3,或者应该是trials迭代器。此时您希望aggregateList有多少项?正如我所写的,我希望它给出一个错误:IndexError: list assignment index out of range。在

for i in range(trials):
    function()

什么是“问题”?您收到了什么错误消息或错误结果?在

我怀疑您对另一种语言比较熟悉,并尝试将它的习惯用法应用于Python。另外,在担心效率之前,先让计算生效。在某些情况下,尽管您可能希望使用numpy来添加数组,以及一次对整个数组进行运算的能力。在

相关问题 更多 >