【问题标题】: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,因为比较的结果是TrueFalse

    【讨论】:

      【解决方案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 次迭代中尝试做的事情。继续并更改数字以进行进一步的迭代:)

      【讨论】:

        猜你喜欢
        • 2019-08-25
        • 2013-09-11
        • 2015-12-20
        • 1970-01-01
        • 2019-04-17
        • 2019-11-21
        • 1970-01-01
        • 2012-02-14
        • 2021-03-12
        相关资源
        最近更新 更多