【问题标题】:Create a list of boolean values based on cutoff根据截止创建布尔值列表
【发布时间】:2020-03-04 22:42:29
【问题描述】:
我正在尝试生成一个包含我可以控制的变量的列表。所以假设我想生成一个长度为 100 的列表,条件如下:
[True if x > 0.8 else False for x in [random_number_between_0_and_1]]
所以列表将有 2:8 真/假值,依此类推。我试过这样的东西,但我的语法是关闭的:
my_list = []
True if x > 0.8 else False for x in random()
my_list.append(i)
感谢任何帮助!
【问题讨论】:
标签:
python
python-3.x
list
random
【解决方案1】:
使用random.choices。
my_list = random.choices([True, False], weights=[2, 8], k=100)
【解决方案2】:
range(100) 将返回一个包含 100 个元素的序列,您可以循环这些元素。对于它们中的每一个,调用rand() 并将条件结果返回到列表推导中。
my_list = [random() > 0.8 for _ in range(100)]
没有必要使用True if ... else False,因为比较的结果是True或False。
【解决方案3】:
我刚刚为您制作了这个简短的模块:
import random
def main():
my_list = []
for _ in range(100):
# Ternary statement like your example
x = True if random.random() > 0.8 else False
my_list.append(x)
print(my_list)
if __name__ == "__main__":
# Run main functionality
main()
这继续进行并实现了您在 100 次迭代中尝试做的事情。继续并更改数字以进行进一步的迭代:)