【问题标题】:Getting True values in a boolean list from indices - python从索引中获取布尔列表中的真值 - python
【发布时间】:2018-12-11 03:36:57
【问题描述】:

如何计算此处描述的倒数:Getting indices of True values in a boolean list? 当我尝试搜索“如何从整数索引中获取布尔列表中的真实值”时,上面的链接总是出现,但它为我提供了布尔列表中真实值的索引,这与我想要的相反...

例如,来自:

t = [4, 5, 7]
count = 16

我要获取:

[False, False, False, False, True, True, False, True, False, False, False, False, False, False, False, False]

与 Python 预期的一样,这些值都是 0 索引的。 我猜我的问题是重复的,但是每次我尝试记住如何执行此操作时都无法找到我要查找的内容,这很烦人,我决定问一个新问题,所以我的谷歌搜索希望下次能提出这个帖子。

【问题讨论】:

    标签: python list


    【解决方案1】:

    您可以使用列表推导。我建议您将 t 转换为 set 以进行 O(1) 查找:

    t_set = set(t)
    res = [i in t_set for i in range(count)]
    

    【讨论】:

      【解决方案2】:

      使用带有条件的列表推导:

      print([True if i in t else False for i in range(count)])
      

      更短:

      print([i in t else False for i in range(count)])
      

      【讨论】:

        【解决方案3】:

        这个怎么样:

        In [6]: holderplace =[False for i in range(count)]
        
        In [7]: for i in t:
           ...:     holderplace[i-1]=True
           ...:     
        
        In [8]: holderplace
        Out[8]: 
        [False,
         False,
         False,
         True,
         True,
         False,
         True,
         False,
         False,
         False,
         False,
         False,
         False,
         False,
         False,
         False]
        
        In [9]: 
        

        【讨论】:

          【解决方案4】:

          您也可以尝试使用map():

          list(map(lambda x: x in t, range(count)))
          # [False, False, False, False, True, True, False, True, False, False, False, False, False, False, False, False]
          

          也可能值得将t 转换为一个集合,因为查找是 O(1) 而不是 O(N)。

          你也可以使用__contains__():

          list(map(t.__contains__, range(count)))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-25
            • 1970-01-01
            • 2015-04-01
            • 2016-09-28
            • 2015-08-30
            • 2014-02-03
            相关资源
            最近更新 更多