шаблонное ограничение в подстроке Python - PullRequest
2 голосов
/ 13 апреля 2019

Я нашел вопрос в Glassdoor.У меня нет дополнительных разъяснений

Ввод: массив int [1,0,0,1,1,0,0,1,0,1,0,0,0,1] вы должны прийтис программой, которая даст все возможные подмножества массива на основе шаблона.Шаблонные ограничения заключались в том, что строковый массив должен начинаться с 1 и заканчиваться на 1. Таким образом, будет много подмассивов, таких как от 0 до 3 и от 0 до 4 и от 7 до 9

. Чтобы решить эту проблему, я думал оиспользуя 2 для циклов, и если в обоих случаях значения равны 1, выведите их.

v = [1,0,0,1,1,0,0,1,0,1,0,0, 0,1]

resultList=[]

for i in range(0,len(v)-1):
    for j in range(i+1, len(v)):
        if v[i]==1 and v[j]==1:
            r=v[i:j]
            resultList.append(r)

print(resultList)

Вывод: [[1, 0, 0], [1, 0, 0, 1], [1, 0, 0, 1, 1, 0, 0], [1, 0, 0, 1, 1, 0, 0, 1, 0], [1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0], [1], [1, 1, 0, 0],

Пока я вижу только 1 правильное значение на выходе [1, 0, 0, 1].Должен ли я использовать набор вместо списка?Я попробовал это, но такой подход тоже не сработал.Может кто-нибудь любезно дать несколько указаний о том, как решить эту проблему?

Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Проблема в v [i: j].Измените v [i: j] на v [i: j + 1]

1 голос
/ 13 апреля 2019

Вы можете использовать itertools.combinations, чтобы выбрать 2 индекса, где значения не равны нулю в списке:

from itertools import combinations
a = [1,0,0,1,1,0,0,1,0,1,0,0,0,1]
[a[i: j + 1] for i, j in combinations((i for i, n in enumerate(a) if n), 2)]

Возвращает:

[[1, 0, 0, 1], [1, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0, 1], [1, 0, 0, 1, 1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1], [1, 1], [1, 1, 0, 0, 1], [1, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0, 1, 0, 0, 0, 1], [1, 0, 1], [1, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...