如何将此 Python for 循环转换为列表理解
How do I convert this Python for loop into a list comprehension
我正在编写代码来随机掷骰子,然后 return 每个数字被掷出的次数。
我将其作为函数运行,但我想知道如何将其转换为列表理解。
这是我正在使用的功能:
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
请注意,roll()
是我在class中为骰子制作的方法。
我得到的最接近工作列表理解的是:
result = die.roll()
results = [result for value in range(1000)]
确实会掷骰子,但它只会 掷一个数字 1,000 次 而不是六个数字,随机数加起来最多 1,000 次。
那么这个 for 循环是否可以变成一个列表推导式,如果可以怎么办?
我想你要找的是:
results = [die.roll() for _ in range(1000)]
请注意,_
通常用作您并不真正关心的值的替代。
好像你有?
results = [random.randint(1,6) for value in range(10)]
有效,所以
results = [die.roll() for value in range(1000)]
应该也是。
唯一的问题是您分配了 die.roll(),这导致结果是原始 return 值而不是函数调用。
我正在编写代码来随机掷骰子,然后 return 每个数字被掷出的次数。
我将其作为函数运行,但我想知道如何将其转换为列表理解。
这是我正在使用的功能:
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
请注意,roll()
是我在class中为骰子制作的方法。
我得到的最接近工作列表理解的是:
result = die.roll()
results = [result for value in range(1000)]
确实会掷骰子,但它只会 掷一个数字 1,000 次 而不是六个数字,随机数加起来最多 1,000 次。
那么这个 for 循环是否可以变成一个列表推导式,如果可以怎么办?
我想你要找的是:
results = [die.roll() for _ in range(1000)]
请注意,_
通常用作您并不真正关心的值的替代。
好像你有?
results = [random.randint(1,6) for value in range(10)]
有效,所以
results = [die.roll() for value in range(1000)]
应该也是。
唯一的问题是您分配了 die.roll(),这导致结果是原始 return 值而不是函数调用。