【发布时间】:2020-02-13 05:54:13
【问题描述】:
我正在使用列表推导来创建一个带有 numpy 的随机数列表。有没有办法检查生成的随机数是否大于 50,然后才将其附加到列表中。
我知道我可以简单地使用:
numbers = [np.random.randint(50,100) for x in range(100)]
这将解决问题,但我只想知道是否有可能以某种方式检查 np.random.randint(1,100) 生成的数字是否大于 50
类似
numbers = [np.random.randint(1,100) for x in range(100) if {statement}]
因为比较 np.random.randit 会生成另一个与第一个不同的数字。
我只是想知道是否有可能在将生成的数字添加到列表之前对其进行过滤。
【问题讨论】:
-
有...但是您必须在嵌套循环中执行此操作,这会很难看,请使用 for 循环。仅供参考
[x for x in [randint().. for _ in range(100)] if x > 50] -
谢谢,是的,它有点丑,但确实有效。感谢您的回答。
-
让我知道我的回答有帮助
-
randint(50, 100) 不会生成大于 50 的数字吗?
-
@JonasPalačionis 您想控制在
numbers中获得的值的数量吗?[np.random.randint(50,100) for x in range(100)]和np.random.randint(50, 100, 100)不等同于基于filter的解决方案,例如filter(lambda x: x > 50, np.random.randint(1, 100, 100))或[x for x in np.random.randint(1, 100, 100) if x > 50]。