как сделать круговое смещение края субматрицы - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу повернуть только край подматрицы в Python, но я не знаю, как

1, 2, 3, 4, 5, 6
7, 8, 9, 10, 11, 12
13, 14, 15, 16, 17, 18
19, 20, 21, 22, 23, 24
25, 26, 27, 28, 29, 30

Я хочу сделать выше матрицы ниже

enter image description here

как я могу сделать это как можно проще в Python?

src = [[1, 2, 3, 4, 5, 6],
       [7, 8, 9, 10, 11, 12],
       [13, 14, 15, 16, 17, 18],
       [19, 20, 21, 22, 23, 24],
       [25, 26, 27, 28, 29, 30]]
det = [[2, 3, 4, 5, 6, 12],
       [1, 8, 9, 10, 11, 18],
       [7, 13, 14, 15, 16, 17],
       [19, 20, 21, 22, 23, 24],
       [25, 26, 27, 28, 29, 30]]

1 Ответ

0 голосов
/ 16 апреля 2019
s=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
m=[]
def up():
    k=0
    l=[0]*len(s[0])
    for i in range(len(s[0])-1):
         l[i]=s[k][i+1]
    l[-1]=s[k+1][-1]

    m.append(l)
def down():
    k=len(s)-1
    l=[0]*len(s[0])
    for i in range(len(s[0])-1):
         l[i+1]=s[k][i]
    l[0]=s[k-1][0]
    m.append(l)

def mid():
     for j in range(1,len(s)-1):
          l=[0]*len(s[0])
          l[0]=s[j-1][0]
          for k in range(1,len(s[0])):
               l[k]=s[j][k]
          l[-1]=s[j+1][-1]
          m.append(l)

up()          
mid()  
down()
print(m)

Вывод: [[2,3,6],[1,5,9],[4,8,12],[7,10,11]] Итак, s - это матрица, границу которой необходимо повернуть против часовой стрелки на 1 элемент.m является окончательной матрицей.Функции up (), mid () и down () соответственно добавляют первый список, средние списки и последний список к m.Для выполнения операции вам нужно будет нарезать массив соответствующим образом.

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