【问题标题】:How do I convert this Python for loop into a list comprehension [duplicate]如何将此 Python for 循环转换为列表理解 [重复]
【发布时间】:2022-01-12 22:20:52
【问题描述】:

我正在编写代码来随机掷骰子,然后返回每个数字的掷骰次数。

我让它作为一个函数工作,但我想知道如何将它转换为列表理解。

这是我正在使用的功能:

results = []
for roll_num in range(1000):
    result = die.roll()
    results.append(result)

请注意,roll() 是我在骰子类中创建的方法。

我得到的最接近工作列表理解的是:

result = die.roll()
results = [result for value in range(1000)]

它确实掷骰子,但它只掷一个数字 1,000 次,而不是六个数字,随机数加起来 1,000 次。

那么这个for循环是否可以变成一个列表理解,如果可以的话怎么办?

【问题讨论】:

  • 思考collections.Counter
  • 为什么将result = die.roll() 放在列表复制范围之外?在任何情况下,是的,这可以直接转换,[die.roll() for roll_num in range(1000)],尽管在循环和理解中,_ 会习惯性地用于代替 roll_num 用于不打算使用的变量

标签: python python-3.x for-loop list-comprehension


【解决方案1】:

好像你有?

results = [random.randint(1,6) for value in range(10)] 有效,所以

results = [die.roll() for value in range(1000)] 也应该这样。

唯一的问题是您分配了 die.roll(),这导致结果是原始返回值而不是函数调用。

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是:

    results = [die.roll() for _ in range(1000)]
    

    请注意,_ 通常用作您并不真正关心的值的替代。

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 2019-03-21
      • 2020-09-13
      相关资源
      最近更新 更多