gpt4 book ai didi

python - 使用 map 将列表项添加到另一个列表的有效方法

转载 作者:行者123 更新时间:2023-12-01 07:24:26 26 4
gpt4 key购买 nike

我有两个浮点列表 L1、L2 或长度分别为 a、b。我还有一个长度为 a 的列表 F,其值是 [-1,b-1] 范围内的整数。我想通过以下方式更新 L2:

for i in filter(lambda x: F[x]+1, range(len(F))):
L2[F[i]] += L1[i]

基本上,F 是 L1 索引的函数。对于 L1 的每个索引 i,如果 F[i] = -1,我们什么都不做,否则,我们将 L1 的第 i 项添加到 L2 的第 F[i] 项中。

我正在一个程序中执行此操作,随着我使结果更加准确,a 和 b 的长度将呈指数增长。 (另外,F大约是50% -1)我意识到这已经需要线性时间,但我想知道是否有某种方法可以更快地改进常数,可能通过列表/求和理解?或者,如果我需要在多次更新后知道 L2 的内容,是否有一种实用的方法来存储这些更新,并以更快的方式一次性完成所有更新?

如果我有两个列表 LL1、LL2,每个列表分别包含 c 个长度为 a 和 b 的列表,而只有一个列表/映射 F,那么情况会怎样呢?如果我希望 LL1[i] 为 [0,c-1] 中的所有 i 更新 LL2[i],是否有一种聪明的方法可以做到这一点,或者没有什么比逐一执行每个 i 更好的了?

澄清:转换为 numpy 结构是完全可以接受的,我只是缺乏如何有效利用 numpy 的先验知识。

最佳答案

您的代码本身相当高效。据我所知,唯一可以改进的是避免使用 lambda 函数,这会增加每次迭代调用函数的开销。相反,您可以使用 enumerate函数生成 F 的索引和值迭代并过滤 F 的值用一个简单的if声明:

for i, j in enumerate(F):
if j != -1:
L2[j] += L1[i]

关于python - 使用 map 将列表项添加到另一个列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57527733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com