Получение значений True в логическом списке из индексов - python - PullRequest
0 голосов
/ 11 декабря 2018

Как вычислить обратное тому, что описано здесь: Получение индексов значений True в логическом списке ?Эта ссылка выше всегда появляется, когда я пытаюсь найти «как получить истинные значения в булевом списке из целочисленных индексов», но она дает мне индексы из истинных значений в булевом списке, что противоположно тому, что я хочу...

Например, из:

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

Я хочу получить:

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

Все значения проиндексированы 0, как и ожидалось в Python.Я предполагаю, что мой вопрос является дубликатом, но это так раздражает, что не могу найти то, что я ищу, каждый раз, когда я пытаюсь вспомнить, как выполнить эту операцию, я решил задать новый вопрос, чтобы мой поиск в GoogleНадеюсь, что в следующий раз подниму этот пост.

Ответы [ 4 ]

0 голосов
/ 11 декабря 2018

Как насчет этого:

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]: 
0 голосов
/ 11 декабря 2018

Вы можете использовать понимание списка.Я рекомендую вам превратить t в set для поиска O (1):

t_set = set(t)
res = [i in t_set for i in range(count)]
0 голосов
/ 11 декабря 2018

Вы также можете попробовать использовать 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(Н).

Вы также можете использовать __contains__():

list(map(t.__contains__, range(count)))
0 голосов
/ 11 декабря 2018

Использовать понимание списка с условиями:

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

Короче:

print([i in t else False for i in range(count)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...