Как определить значение, превышающее определенный порог в матрице? - PullRequest
0 голосов
/ 01 января 2019

Предположим, у меня есть матрица:

a = [[4,7,2],[0,1,4],[4,5,6]] 

И я хочу получить

b = [0, 1]
c = [[2],[0,1]]
  • b = [0,1], потому что внутренние списки a в позиции 0 и 1 содержат значения, которые меньше 3.
  • c = [[2],[0,1]] потому что [2] ый элемент первого подсписка в b ниже 3 и [0,1], потому что первый и второй элемент во втором подсписке в b ниже 3.

Я пытался:

for i in a:
   for o in i:
      if o < 3:
         print(i)

Возвращает только исходную матрицу.

Как мне получить b & c в питоне?

1 Ответ

0 голосов
/ 01 января 2019

Вы можете перевести enumerate(iterable[,startingvalue]), что дает вам индекс и значение того, что вы повторяете:

a = [[4,7,2],[0,1,4],[4,5,6]] 

thresh = 3
b = [] # collects indexes of inner lists with values smaller then thresh
c = [] # collects indexes in the inner lists that are smaller then thresh
for idx, inner_list in enumerate(a):
    if any(value < thresh for value in inner_list):
        b.append(idx)
        c.append([])
        for idx_2, value in enumerate(inner_list):
            if value < thresh:
                c[-1].append(idx_2)

print(a)
print(b)
print(c)

Вывод:

[[4, 7, 2], [0, 1, 4], [4, 5, 6]]
[0, 1]
[[2], [0, 1]]

Доку:

...