从索引获取布尔列表中的真值-python
我如何计算这里所描述的逆:? 当我尝试搜索“如何从整数索引中获取布尔列表中的真值”时,上面的链接总是出现,但它会从布尔列表中的真值中提供索引,这与我想要的相反 例如,来自:从索引获取布尔列表中的真值-python,python,list,Python,List,我如何计算这里所描述的逆:? 当我尝试搜索“如何从整数索引中获取布尔列表中的真值”时,上面的链接总是出现,但它会从布尔列表中的真值中提供索引,这与我想要的相反 例如,来自: t = [4, 5, 7] count = 16 我想获得: [False, False, False, False, True, True, False, True, False, False, False, False, False, False, False, False] 正如Python所期望的那样,这些值都是
t = [4, 5, 7]
count = 16
我想获得:
[False, False, False, False, True, True, False, True, False, False, False, False, False, False, False, False]
正如Python所期望的那样,这些值都是0索引的。
我猜我的问题是重复的,但每次我试图记住如何做这个操作时,都找不到我要找的东西,这太令人恼火了。我决定问一个新问题,这样我的谷歌搜索希望下次能出现这篇文章。使用列表理解,并附带条件:
print([True if i in t else False for i in range(count)])
较短:
print([i in t else False for i in range(count)])
您可以使用列表理解。我建议您将
t
转换为set
进行O(1)查找:
您也可以尝试使用:
也值得将t
转换为一个集合,因为查找是O(1)而不是O(N)
您还可以使用:
这个怎么样:
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]:
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]
list(map(t.__contains__, range(count)))
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]: