python已知有列表_如何在Python中从具有已知百分比的列表中选择项目

lst = [ ('Orange', 0.10), ('Apple', 0.05), ('Mango', 0.15), ('etc', 0.69) ]

x = 0.0

lst2 = []

for fruit, chance in lst:

tup = (x, fruit)

lst2.append(tup)

x += chance

tup = (x, None)

lst2.append(tup)

import random

def pick_one(lst2):

if lst2[0][1] is None:

raise ValueError, "no valid values to choose"

while True:

r = random.random()

for x, fruit in reversed(lst2):

if x <= r:

if fruit is None:

break # try again with a different random value

else:

return fruit

pick_one(lst2)

这将构建一个新的列表,其中升序值表示选择水果的值范围;然后pick_one()向后遍历列表,查找一个值,该值为&lt;=当前随机值。我们将一个“sentinel”值放在列表的末尾;如果值没有达到1.0,则有可能出现一个不应该与任何内容匹配的随机值,它将与sentinel值匹配,然后被拒绝。随机。随机()返回一个范围为[0.0,1.0)的随机值,因此它最终肯定会匹配列表中的某些内容。在

这里的好处是,你应该能够有一个匹配概率为0.000001的值,它实际上应该与这个频率相匹配;其他的解决方案是,列出一个重复使用的项目列表随机选择()若要选择一个,则需要一个包含一百万项的列表来处理此情况。在

要求解湿球温度,可以使用Psychrometric Chart(湿空气热力学图)或Psychrolib(Python库,用于湿空气物性计算)来实现。以下是使用Psychrolib库的示例代码: ```python import psychrolib def calculate_wetbulb_temperature(drybulb_temperature, relative_humidity): # 初始化Psychrolib库 psychrolib.SetUnitSystem(psychrolib.SI) # 输入干球温度和相对湿度 drybulb_temperature_k = psychrolib.DrybulbF2C(drybulb_temperature) relative_humidity = relative_humidity / 100.0 # 计算湿球温度 wetbulb_temperature_k = psychrolib.GetTWetBulbFromRelHum(drybulb_temperature_k, relative_humidity) # 将温度转换为摄氏度 wetbulb_temperature = psychrolib.WetbulbC2F(wetbulb_temperature_k) # 返回湿球温度 return wetbulb_temperature # 输入干球温度和相对湿度 drybulb_temperature = 25.0 # 干球温度(摄氏度) relative_humidity = 60.0 # 相对湿度(百分比) # 计算湿球温度 wetbulb_temperature = calculate_wetbulb_temperature(drybulb_temperature, relative_humidity) print("湿球温度为: {} 摄氏度".format(wetbulb_temperature)) ``` 这段代码使用Psychrolib库的函数进行湿球温度的计算。首先,我们将输入的干球温度和相对湿度转换为适用于库函数的单位(摄氏度和百分比)。然后,使用`GetTWetBulbFromRelHum`函数计算湿球温度。最后,将计算结果转换为摄氏度并输出。 注意:在运行此代码前,你需要首先安装Psychrolib库。可以使用以下命令来安装: ``` pip install psychrolib ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值