gpt4 book ai didi

python - 有人可以解释以下列表理解吗

转载 作者:太空狗 更新时间:2023-10-30 03:04:45 25 4
gpt4 key购买 nike

这是 python 文档中关于如何生成随机序列的一段简单代码,即当每个序列都具有关联的权重时选择一种颜色。

我理解这个概念,但是当我尝试自己做时,无法弄清楚列表理解在做什么。有人可以反复解释这个列表理解在做什么,这样我就可以更好地理解这段代码。谢谢。

weighted_choices = [('Red', 3), ('Blue', 2), ('Yellow', 1), ('Green', 4)]
population = [val for val, cnt in weighted_choices for i in range(cnt)]
random.choice(population)
'Green'

最佳答案

weighted_choices = [('Red', 3), ('Blue', 2), ('Yellow', 1), ('Green', 4)]
population = [val for val, cnt in weighted_choices for i in range(cnt)]
random.choice(population)
'Green'

让我们从简单的理解开始

simple = [val for val, cnt in weighted_choices]

这个简单的列表理解是这样做的:

  • 对于 weighted_choices 中的每个项目,打破第一部分并将其分配给 val,将第二部分分配给 cnt。
  • 获取 val 并从每个 val 中创建一个新数组

这会产生:

['Red','Blue','Yellow''Green']

现在让我们看第二部分,让我们先做一个简单的列表理解

second_part = ['Red' for i in range(3)]

列表理解的第二部分是这样做的:

  • 对于范围 (3) 中的每个 i(数字 [0,1,2])
  • 丢弃 i 并将'Red'添加到列表中

这会产生:

['Red','Red','Red']

结合两种理解:

population = [val for val, cnt in weighted_choices for i in range(cnt)]

这个简单的列表理解是这样做的:

  • 对于 weighted_choices 中的每个项目,打破第一部分并将其分配给 val,将第二部分分配给 cnt。 (例如第一项为“红色”和 3)
  • 接受 val 和
  • 对于 range(cnt) 中的每个 i(如果 cnt 为 3,则数字 [0,1,2])丢弃 i 并将 val 添加到列表中

这会产生:

['Red', 'Red', 'Red', 'Blue', 'Blue', 'Yellow', 'Green', 'Green', 'Green', 'Green']

关于python - 有人可以解释以下列表理解吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14469329/

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