Предположим, у меня есть матрица M
и индексный набор idx=[(0,1),(2,3),(3,2)]
, и я хочу создать два набора кортежей idx_leq1
, состоящих из тех кортежей, первый и второй элементы которых меньше или равны 1 и idx_geq2
, состоящий из тех кортежей, чьи первый и второй элементы больше или равны 2.
Я хочу получить доступ к элементам M[idx_leq1]
и M[idx_geq2]
.Я попытался idx_leq1 = tuple([e for e in idx if e[0]<=1 and e[1]<=1])
, но это возвращает idx_leq1 = ((0,1),)
, который я не могу использовать для индексации M
.С другой стороны, idx_geq2 = tuple([e for e in idx if e[0]>=2 and e[1]>=2]) = ((2,3),(3,2))
работает.
Как я могу решить это для случая, когда мой первый набор индексов состоит только из одной пары координат?Я не хочу делать M[idx_leq1[0]]
.
Я могу сделать: list(chain(*[(e,) for e in idx if e[0]<=1 and e[1]<=1]))
и list(chain(*[(e,) for e in idx if e[0]>=2 and e[1]>=2]))
, но тогда мне все равно придется взять первый элемент за idx_leq1
, тогда как я могу передать idx_geq2
на M
и возьмите соответствующие элементы.
Спасибо!