从列表列表中复制浮点值

时间:2018-07-28 01:44:34

标签: python python-3.x probability

如果我找的地方不对,我会道歉,但是我一生无法弄清楚如何从说话中获得价值 package.jsonlist[[1,2,3][4,5,6.01]]集成到代码中,但列表除外。

list[1][2]

2 个答案:

答案 0 :(得分:1)

您的问题是这一行:

prob = [fruits[i][1] / fsum]

您将prob定义为具有一个值的列表,只需删除不必要的列表,例如:

prob = fruits[i][1] / fsum

那么fruits[index][2]将是概率。

您应该考虑将while循环替换为for循环,例如:

while i < len(fruits):
    fsum += fruits[i][1]
    i += 1
i = 0

等效于:

for fruit in fruits:
    fsum += fruit[1]

这可以通过生成器表达式实现:

fsum = sum(fruit[1] for fruit in fruits)

但是,如果您只是想根据相对权重(fruits[i][1]采摘水果,那么在Py3.6中,没有setup()的话,还有一种更简便的方法,例如:

def pick(fruits):
    items, weights = zip(*fruits)
    return random.choices(items, weights)[0]

在Py3.6之前,您可以执行以下操作:

def pick(fruits):
    return random.choice([f for fruit in fruits for f in [fruit[0]]*fruit[1]])

答案 1 :(得分:0)

只需使用索引访问权限和索引0访问列表/数组的第一项即可:

 var = fruits[index][2][0]