Сгенерировать матрицу python

помогите написать генератор для двух матриц

1 0 1 0 1 0  
0 1 0 1 0 1  
1 0 1 0 1 0    
0 1 0 1 0 1  
1 0 1 0 1 0   

и

0 1 1 1 1 1 1 0  
4 0 1 1 1 1 0 2  
4 4 0 1 1 0 2 2  
4 4 4 0 0 2 2 2  
4 4 4 0 0 2 2 2  
4 4 0 3 3 0 2 2  
4 0 3 3 3 4 0 2  
0 3 3 3 3 3 3 0  

В таком виде:

[[ i * j for j in range(m)] for i in range(n)]  

Заранее спасибо!


Ответы (1 шт):

Автор решения: Евгений
from pprint import pprint

def matrix_1(rows=5, cols=6):
  return [
    [
      1 - (i+j)%2
      for j in range(cols)
    ]
    for i in range(rows)
  ]

def matrix_2(size=8):
  return [
    [
      0 if i == j or i + j + 1 == size
      else 1 if j > i and i + j + 1 < size
      else 2 if j > i and i + j + 1 > size
      else 3 if j < i and i + j + 1 > size
      else 4
      for j in range(size)
    ] 
    for i in range(size)
  ]

pprint(matrix_1())
print()
pprint(matrix_2())
[[1, 0, 1, 0, 1, 0],
 [0, 1, 0, 1, 0, 1],
 [1, 0, 1, 0, 1, 0],
 [0, 1, 0, 1, 0, 1],
 [1, 0, 1, 0, 1, 0]]

[[0, 1, 1, 1, 1, 1, 1, 0],
 [4, 0, 1, 1, 1, 1, 0, 2],
 [4, 4, 0, 1, 1, 0, 2, 2],
 [4, 4, 4, 0, 0, 2, 2, 2],
 [4, 4, 4, 0, 0, 2, 2, 2],
 [4, 4, 0, 3, 3, 0, 2, 2],
 [4, 0, 3, 3, 3, 3, 0, 2],
 [0, 3, 3, 3, 3, 3, 3, 0]]
→ Ссылка