Как поменять столбцы местами в матрице питон
Перейти к содержимому

Как поменять столбцы местами в матрице питон

  • автор:

Как поменять местами столбец и строку во вложенном списке python?

Пытаюсь написать свою версию 2048, но столкнулся с проблемой. Пытаюсь написать движение чисел вверх, для этого мне нужно отсортировать список по горизонтали так, чтобы слева стояли двойки, а дальше шли нули и поменять местами столбцы и строки, чтобы всё заработало. Перепробовал множество вариантов решения проблемы, но никак не могу решить её.

import pygame import sys import random pygame.init() SIZE_BLOCK = 100 MARGIN = 5 WIDTH = HEIGHT = SIZE_BLOCK * 4 + MARGIN * 5 BLACK = 0, 0, 0 RED = 255, 0, 0 GREEN = 0, 255, 0 WHITE = 255, 255, 255 def pretty_print(list): for j in list: print(j) print('-' * 25) def left_sort_in_mas(list): # Подсчитываем количесво нулей в словаре zeroes_count = list.count(0) # Создаем словарь с количеством нулей zeroes_count zeroes_count_list = [0] * zeroes_count len_row = len(list) while zeroes_count_list != list[len_row - zeroes_count:]: first_zero_index = list.index(0) del list[first_zero_index] list.append(0) return list # Функция возвращает индекс последнего элемента со значением number в списке row def found_last_number(row, number): try: zero_index = row.index(number) number_count = row.count(number) iteration_count = 1 while number_count != iteration_count: zero_index = row.index(number, zero_index + 1, len(row) - 1) iteration_count += 1 return zero_index except ValueError: zero_index = -1 return zero_index screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption('2048') mas = [[0] * 4 for i in range(4)] # Стараюсь создать в массиве множество двое, чтобы проверить логику игры. Решение, конечно, временное =) def random_2(): mas[random.randint(0, 3)][random.randint(0, 3)] = 2 mas[random.randint(0, 3)][random.randint(0, 3)] = 2 mas[random.randint(0, 3)][random.randint(0, 3)] = 2 random_2() random_2() random_2() random_2() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: for row in mas: left_sort_in_mas(row) if event.key == pygame.K_RIGHT: for row in mas: # Подсчет количества нулей zeroes_count = row.count(0) # Создаем список из количества нулей в row zeroes_count_list = [0] * zeroes_count # Пока эти списки не будут равный переносим нули влево while zeroes_count_list != row[:zeroes_count]: last_zero_index = found_last_number(row, 0) if last_zero_index >= 0 or last_zero_index 
  • Вопрос задан более трёх лет назад
  • 1473 просмотра

1 комментарий

Средний 1 комментарий

Поменять столбцы

Author24 — интернет-сервис помощи студентам

Поменять столбцы
Дан двумерный массив и два числа: i и j. Поменяйте в массиве столбцы с номерами i и j.

Программа получает на вход в первой строке размеры массива n≤100 и m≤100, затем элементы массива, а в последней строке числа i и j.

Выведите полученный массив.

Примеры
Ввод
3 4
11 12 13 14
21 22 23 24
31 32 33 34
0 1
вывод
12 11 13 14
22 21 23 24
32 31 33 34

1 2 3 4 5 6 7 8 9 10 11 12
n, m = map(int, input().split()) a =[list(map(int, input().split())) for z in range(n)] i, j = map(int, input().split()) for z in range(len(a)): for x in range(len(a[z])): if x == i: a[z][i], a[z][j] = a[z][j], a[z][i] break if x == j: a[z][j], a[z][i] = a[z][i], a[z][j] for row in a: print(" ".join(list(map(str, row))))

непойму что не так

Добавлено через 1 минуту
Лоол, как сюда код отправил сразу понял что не так второй раз уже, ну что такое ахах
уже понял

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как поменять столбцы местами по ключу?
import copy import math word = input("Введите фразу для шифровки:") KeyI = (input("Введите.

В матрице поменять местами строки и столбцы
В данной действительной матрице размера n⨯m ( n≥3 , m≥3 ) поменять местами: а)строки с номерами 2.

Поменять местами строки и столбцы матрицы
Дана действительная квадратная матрица порядка n. Преобразовать матрицу по следующему правилу.

Поменять местами строки и столбцы в матрице
Как в Python поменять строки и столбцы местами в матрице

Регистрация: 14.04.2021
Сообщений: 1

n, m = map(int, input().split())
a = []
for i in range(n):
row = input().split()
a.append(row)

j1, j2 = map(int, input().split())

for i in range(n):
a[i][j1], a[i][j2] = a[i][j2], a[i][j1]

for i in a:
print(" ".join(i))

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Транспонировать матрицу (поменять столбцы и строки местами)
Транспонировать матрицу (поменять столбцы и строки местами), используя другой массив

Поменять местами строки и столбцы матрицы размерностью nxm
Хэлп плиз. Есть матрица размерностью nxm значения вводятся с клавиатуры. И создаётся матрица.

Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы
Дана матрица размера M х N. Поменять местами столбцы, содержащие минимальный и максимальный.

В двухмерном массиве целых чисел поменять местами столбцы, симметричные относительно середины массива
В двухмерном массиве целых чисел поменять местами столбцы, симметричные относительно середины.

Создать случайную и поменять местами столбцы
Создать случайную матрицу 5x7 целых чисел от 1 до 100 и поменять местами 3 и 5 колонки import.

Найти столбцы максимального элемента и поменять местами столбцы
В массиве целых чисел найти индекс столбца максимального элемента. Требуется поменять местами.

Или воспользуйтесь поиском по форуму:

Поменять местами строки и столбцы в матрице.

Задача:
Дан двумерный массив целых чисел размером 4 на 4.
Поменяйте местами строки и столбцы.Выведи матрицу. до и после обработки на экран.

С выводом на экран и т.п все ясно.
НО как поменять строки и столбцы?
Какое условие?

Лучший ответ

Тут всё просто 🙂
mas[4][4]; //задать исходный массив
mas1[4][4]; //создать пустой массив

for (int i=0; i for (int j=0; j mas1[j] = mas[j];

в пустом будет решенная задача 🙂 а на каком языке кстати? 🙂

FlearМыслитель (5336) 13 лет назад
Турбо Паскаль
PINEgrosbeakМастер (1025) 13 лет назад

очень интересно как это ты вот так "mas1[j] = mas[j]; " записал двумерные массивы ??

for (int i=0; i 13 лет назад

вообще то я писал [j] = [j] - не знаю почему отобразилась одна скобка 🙂

vTin Ученик (248) ад 🙂 короче я писал 2 скобки, отображается в ответе лишь одна, почему не знаю 🙂 вы правы 🙂

Остальные ответы

Эх.. . Программистки 🙂 Тебе нужен цикл со вложенным циклом. Первый пребирает строки, второй, который вложенный, столбцы. Плюс к этому во вложенном цикле добавлеш действие которое будет сохронять значения из матрицы в новый двухмерный масив.

Поменять столбцы матрицы местами

В числовой матрице поменять местами два столбца, т. е. все элементы одного столбца поставить на соответствующие им позиции другого, а его элементы второго переместить в первый.

Столбец матрицы определяется вторым индексом. Поэтому в цикле следует перебирать строки матрицы, т.е. переменная-счетчик будет использоваться в качестве первого индекса двумерного массива.

В каждой строке менять местами элементы с номерами указанных столбцов. От итерации к итерации они не меняются. Обмен можно производить через третью переменную.

Пусть номера столбцов, которые следует поменять местами, задаются путем ввода значений в момент выполнения программы.

Если в языке программирования индексация массивов начинается с нуля, а столбцы указываются, исходя из их фактического положения в матрице (начиная с 1), то следует из переменных, в которых записаны номера столбцов, вычесть единицу перед их использованием в цикле.

Pascal

 
const
N = 3; M = 6;
var
arr: array[1..N,1..M] of byte;
i,j,a,b,buff: byte;
begin
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
arr[i,j] := random(4);
write(arr[i,j]:3);
end;
writeln;
end;
write('Какие столбцы поменять местами: ');
readln(a,b);
for i:=1 to N do begin
buff := arr[i,a];
arr[i,a] := arr[i,b];
arr[i,b] := buff;
end;
for i:=1 to N do begin
for j:=1 to M do
write(arr[i,j]:3);
writeln;
end;
end.
 

2 0 2 1 1 2
2 1 1 1 0 2
3 3 1 2 3 2
Какие столбцы поменять местами: 2 6
2 2 2 1 1 0
2 2 1 1 0 1
3 2 1 2 3 3

Язык Си

поменять местами столбцы матрицы c++

 
#include < stdio.h>
#define M 10
#define N 5
main() int a[N][M];
int i, j, n1, n2, ch;
srand(time(NULL));
for (i=0; i < N; i++) for (j=0; j < M; j++) a[i][j] = rand() % 10;
printf("%5d", a[i][j]);
>
printf("\n");
>
printf("Поменять столбцы: ");
scanf("%d",&n1);
scanf("%d",&n2);
for (i=0; i < N; i++) ch = a[i][n1-1];
a[i][n1-1] = a[i][n2-1];
a[i][n2-1] = ch;
>
for (i=0; i < N; i++) for (j=0; j < M; j++) printf("%5d", a[i][j]);
>
printf("\n");
>
>
 

0 0 5 1 4 1 8 8 5 3
8 0 5 8 4 3 0 6 0 8
3 2 1 4 9 8 6 6 2 7
7 2 7 2 6 4 6 4 2 1
9 3 1 7 1 8 0 4 6 0
Поменять столбцы: 7 8
0 0 5 1 4 1 8 8 5 3
8 0 5 8 4 3 6 0 0 8
3 2 1 4 9 8 6 6 2 7
7 2 7 2 6 4 4 6 2 1
9 3 1 7 1 8 4 0 6 0

Python

 
from random import random
M = 10
N = 5
a = []
for i in range(N):
b = []
for j in range(M):
b.append(round(random()*2))
a.append(b)
print(b)

c1 = int(input("Один столбец: ")) - 1
c2 = int(input("Другой столбец: ")) - 1

for i in range(N):
a[i][c1], a[i][c2] = a[i][c2], a[i][c1]
print(a[i])
 

[2, 1, 2, 2, 1, 0, 2, 1, 0, 1]
[1, 1, 1, 1, 1, 1, 2, 2, 2, 1]
[1, 1, 0, 1, 1, 1, 2, 0, 0, 1]
[0, 0, 0, 2, 0, 0, 1, 2, 1, 2]
[1, 0, 0, 1, 2, 0, 2, 1, 1, 0]
Один столбец: 3
Другой столбец: 10
[2, 1, 1, 2, 1, 0, 2, 1, 0, 2]
[1, 1, 1, 1, 1, 1, 2, 2, 2, 1]
[1, 1, 1, 1, 1, 1, 2, 0, 0, 0]
[0, 0, 2, 2, 0, 0, 1, 2, 1, 0]
[1, 0, 0, 1, 2, 0, 2, 1, 1, 0]

КуМир

 
алг поменять столбцы местами
нач
цел M = 6, N = 4
цел таб a[1:N,1:M]
цел i, j, c1, c2, b

нц для i от 1 до N
нц для j от 1 до M
a[i,j] := int(rand(0,10))
вывод a[i,j]:3
кц
вывод нс
кц

ввод c1
ввод c2

нц для i от 1 до N
b := a[i,c1]
a[i,c1] := a[i,c2]
a[i,c2] := b
кц

нц для i от 1 до N
нц для j от 1 до M
вывод a[i,j]:3
кц
вывод нс
кц
кон
 

4 7 6 9 3 8
1 5 3 4 5 6
3 3 9 9 5 0
1 2 1 5 7 7
1
6
8 7 6 9 3 4
6 5 3 4 5 1
0 3 9 9 5 3
7 2 1 5 7 1

Basic-256

 
M = 8
N = 3
dim a(N,M)
for i = 0 to N-1
for j=0 to M-1
a[i,j] = int(rand*10)
print a[i,j] + " ";
next j
print
next i

input c1
input c2

for i=0 to N-1
buff = a[i,c1-1]
a[i,c1-1] = a[i,c2-1]
a[i,c2-1] = buff
next i

for i = 0 to N-1
for j=0 to M-1
print a[i,j] + " ";
next j
print
next i
 

0 7 0 1 3 8 3 8
0 9 4 1 7 5 9 7
2 3 4 6 4 0 1 6
3
7
0 7 3 1 3 8 0 8
0 9 9 1 7 5 4 7
2 3 1 6 4 0 4 6

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *