根据截止值创建布尔值列表

时间:2020-03-04 22:42:29

标签: python python-3.x list random

我正在尝试生成一个包含我可以控制的变量的列表。假设我要生成一个条件为100的列表:

[True if x > 0.8 else False for x in [random_number_between_0_and_1]]

因此列表将具有2:8的True / False值,依此类推。我尝试过类似的操作,但是语法已关闭:

    my_list = []
    True if x > 0.8 else False for x in random()
    my_list.append(i)

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

使用random.choices

my_list = random.choices([True, False], weights=[2, 8], k=100)

答案 1 :(得分:1)

我刚刚为您制作了这个简短的模块:

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次迭代所做的尝试。继续并更改数量以进行进一步的迭代:)

答案 2 :(得分:1)

range(100)将返回100个元素的序列,您可以对其进行循环。对于每一个,调用rand()并将条件结果返回到列表推导中。

my_list = [random() > 0.8 for _ in range(100)]

由于比较的结果是True if ... else FalseTrue,因此无需使用False