Если по какой-либо причине вы не можете использовать NumPy, напишите пользовательскую реализацию:
def getColumns(matrix, columns):
return {c: [matrix[r][c] for r in range(len(matrix))] for c in columns}
Она принимает двумерный массив и список столбцов и возвращает словарь, в котором индексы столбцов являются ключами.и фактические столбцы являются значениями.Обратите внимание, что если вы передадите все индексы, вы получите транспонированную матрицу.В вашем случае
M = [[0, 9, 1, 6],
[0, 3, 1, 5],
[0, 2, 1, 7],
[0, 6, 1, 2]]
Все нечетные столбцы являются четными индексами (потому что индекс первого равен 0), следовательно:
L = list(range(0, len(M[0]), 2))
И затемвы бы сделали:
myColumns = getColumns(M, L)
print(list(myColumns.values()))
#result: [[0, 0, 0, 0], [1, 1, 1, 1]]
Но так как вы показали значения, как если бы они были в строках:
def f(matrix, columns):
return [[matrix[row][i] for i in columns] for row in range(len(matrix))]
print(f(M, L))
#result: [[0, 1], [0, 1], [0, 1], [0, 1]]
И я считаю, что последнее это то, что выхотел.