gpt4 book ai didi

python - 有条件地乘法列表python

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:52 25 4
gpt4 key购买 nike

我必须将列表 (a) 与其他两个列表(b 和 c)之一相乘,但条件是 (a) 中的值是正数还是负数。

我确实有一个可行的解决方案,但速度很慢,我想大大加快它的速度。我相信this R 中的代码是我需要的,但不知道 Python 中的类似方法。

编辑:

我应用了 Moinuddin Quadri 的方法:

amount = [0,1,0,0,-1,0,1,-1,1]
data1 = [10,11,12,13,14,15,16,15,14]
data2 = [3,1,2,3,4,5,6,5,4]

flow2 = [(i*j if i > 0 else i*k) for i, j, k in zip(amount, data1, data2)]

100000 次循环,最好的 3 次:每次循环 2.35 µs

而我自己的尝试:

amount = [0,1,0,0,-1,0,1,-1,1]
data1 = [10,11,12,13,14,15,16,15,14]
data2 = [3,1,2,3,4,5,6,5,4]

flow = [0]*len(data1)

for i in range(len(data1)):
if amount[i] > 0:
flow[i] = amount[i]*data1[i]
else:
flow[i] = amount[i]*data2[i]

100000 次循环,3 次循环最佳:每次循环 2.97 µs。

所以这是一个轻微的改进,但不是很大。我必须多次迭代执行此任务,并且需要进行重大改进...

最佳答案

更好的方法是使用列表理解(有条件检查)和zip作为:

>>> a = [1, -3, 2, -5, 5, 6, -8]
>>> b = [1, 3, 5, 7, 9, 11, 13]
>>> c = [2, 4, 6, 8, 10, 13, 14]

>>> [(i*j if i > 0 else i*k) for i, j, k in zip(a, b, c)]
[1, -12, 10, -40, 45, 66, -112]

关于python - 有条件地乘法列表python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48612077/

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