我将尝试使用列表推导式来重新创建一个包含多个
我的程序目前是这样的:
这个程序会根据概率生成1、2、3或4的列表。我想知道是否有办法利用列表推导来完成同样的任务。
假设给定向量
我尝试了以下代码:
但是这将返回所有满足
elif
语句的函数的结果。我的程序目前是这样的:
import numpy as np
def myFunction(x):
result = []
for num in x:
if num <= 0.5:
result.append(1)
elif num <= 0.75:
result.append(2)
elif num <= 0.9:
result.append(3)
else:
result.append(4)
return result
u = np.random.uniform(0,1,1000)
myFunction(u)
这个程序会根据概率生成1、2、3或4的列表。我想知道是否有办法利用列表推导来完成同样的任务。
假设给定向量
x = [1,2,3,4]
和Prob = [0.5,0.75,0.9,1.0]
,它表示第i个事件发生的累计概率。如何使用列表推导获得类似的结果?我尝试了以下代码:
[x[i] for num in u for i, test in enumerate(Prob) if num <= test]
但是这将返回所有满足
num <= test
的x
元素,而我只想要第一个。希望我的表达清楚,感谢您的任何帮助。
next
函数来包装你的列表推导式,例如:next(x[i] for num in u for i, test in enumerate(Prob) if num <= test)
。虽然我必须承认我不太确定我是否正确理解了你的意思。 - UnholySheep