Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/163: Рейтинг темы: голосов - 163, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 04.12.2017
Сообщений: 21

Транспонирование матрицы

21.02.2018, 17:40. Показов 33369. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию transpose(matrix), которая принимает матрицу
N×M (т.е. список из N списков-строк по M элементов каждый) и транспонирует её, т.е. превращает строки в столбцы и наоборот.
i - ая строка при этом превращается в
i - й столбец.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2018, 17:40
Ответы с готовыми решениями:

Транспонирование матрицы
Здравствуйте. Не могу транспонировать матрицу a. import random import numpy A = set(random.sample(range(-10, 10), 5)) ...

Транспонирование матрицы
Напишите функцию transpose(matrix), которая принимает матрицу N × M (т.е. список из N списков-строк по M элементов каждый) и транспонирует...

Транспонирование матрицы
Выдает ошибку , пожалуйста помогите исправить def transpose(matrix): count = 0 count2 = 0 tabl = mat = if...

17
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
21.02.2018, 18:02
Лучший ответ Сообщение было отмечено Black Fregat как решение

Решение

Python
1
2
3
4
5
6
def transpose(matrix):
    return[list(x) for x in zip(*maxrix)]
 
maxrix = [[1,2,3], [4,5,6], [7,8,9]]
 
print(transpose(maxrix))
3
0 / 0 / 0
Регистрация: 04.12.2017
Сообщений: 21
21.02.2018, 18:29  [ТС]
При вводе:
1 2
3 4
Выводит:
1 2
3 4
А должно:
1 3
2 4
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
21.02.2018, 18:34
Нормально все
Python
1
2
maxrix = [[1,2], [3,4]]
print(transpose(maxrix))
Вывод:
[[1, 3], [2, 4]]

Как ввод обрабатываешь?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
21.02.2018, 20:58
Посмотрев в свой хрустальный шар, подозеваю, что человек написал примерно так:
Python
1
2
3
# Тут ввод maxrix
transpose(maxrix)
# А тут вывод той же maxrix
1
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 12
19.03.2019, 17:14
Black Fregat, вы абсолютно правы!

Совсем засада с этими глобальными переменными ((
И вот так пробовал
global matrix

Всё равно чекер ругается что ответ неправильный. Вроде простая задачка совсем.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
19.03.2019, 17:43
Цитата Сообщение от Realdreamer Посмотреть сообщение
И вот так пробовал
global matrix
А зачем? В примере используется функция, которая возвращает новую транспонированную матрицу.
Что ж тебе еще надобно, старче?
0
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,249
19.03.2019, 17:52
Еще одна версия с транспонированием

Python
1
2
3
4
5
6
7
8
matrix = [[1, 0, 8],
         [3, 4, 1],
         [0, 4, 2]]
 
 
matrix_rotate =[list(a) for a in list(zip(*matrix))]
 
print('Транспонированная матрица\n', *matrix_rotate, sep = '\n')
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 12
20.03.2019, 08:44
Цитата Сообщение от Garry Galler Посмотреть сообщение
А зачем? В примере используется функция, которая возвращает новую транспонированную матрицу.
Что ж тебе еще надобно, старче?
Уважаемый Garry Galler
К сожалению в этом и есть смысл задачи. Чтобы не вернуть НОВУЮ транпонированную матрицу, а именно изменить существующую.
Если вы обратите внимание то в примере результат функции не присваивается никакой переменной и не печатается. Функция вызывается как процедура выполняющая какие то действия без обратного отклика.
Это как раз тема про глобальные переменные и их область видимости.
Black Fregat это абсолютно правильно подметил.
Жаль что он не дал нам наводку как решить это.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
20.03.2019, 10:19
Есть такая "хорошая" функция как [:]:
Python
1
2
3
4
5
6
7
8
9
10
def transpose(matrix):
    matrix[:] =[list(x) for x in zip(*matrix)]
    
def main():
    matrix = [[1,2,3], [4,5,6], [7,8,9]]
    transpose(matrix)
    print(matrix)
 
if __name__ == "__main__":
    main()
5
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
20.03.2019, 10:32
Realdreamer, Вы уверены, что правильно поняли задание?

Если Вам таки действительно нужно изменить именно по месту матрицу, то есть список строк, то проще всего это сделать через временную переменную, примерно так:
Python
1
2
3
4
temp =[list(row) for row in zip(*matrix)]
while matrix:
    matrix.pop(-1)
matrix.extend(temp)
0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
20.03.2019, 10:32
Цитата Сообщение от Realdreamer Посмотреть сообщение
Жаль что он не дал нам наводку как решить это.

Не по теме:

Совсем собленились.


Присвоить той же самой переменной?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
20.03.2019, 10:33
Arsegg, да, Ваш вариант лучше
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 12
20.03.2019, 17:22
Цитата Сообщение от Black Fregat Посмотреть сообщение
Если Вам таки действительно нужно изменить именно по месту матрицу, то есть список строк, то проще всего это сделать через временную переменную, примерно так:
Именно так и пытался сделать с самого начала. Но я так понял что когда я присваиваю переменной значение объекта matrix переменная получает не само значение а начинает "смотреть" на тот же объект что и matrix. И когда я меняю её - matrix тоже меняется. И результат в итоге получается неправильный.
Извините если сумборно объясняю. Я так до конца и не понял эту тему с ссылками объектов.

Но вот сейчас вспомнил что уже слышал про метод через [:] предложенный Arsegg. Сегодня обязательно попробую.
0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
20.03.2019, 18:20
Realdreamer, на самом деле, подход "менять саму переменную" хуже. Именно поэтому, к примеру, numpy так не делает, все его функции возвращают изменённый объект, не трогая входные данные.
0
0 / 0 / 0
Регистрация: 06.11.2018
Сообщений: 12
20.03.2019, 20:15
Цитата Сообщение от Arsegg Посмотреть сообщение
Есть такая "хорошая" функция как [:]:
Ура!! Получилось! Спасибо вам большое. Столько вариантов испробовал. А задачка решилась в одну строчку
0
10 / 10 / 0
Регистрация: 20.10.2019
Сообщений: 119
24.03.2020, 21:23
Скинь пожалуйста
0
0 / 0 / 0
Регистрация: 30.01.2021
Сообщений: 27
22.04.2021, 22:07
Realdreamer,
скинь пожалуйста )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2021, 22:07
Помогаю со студенческими работами здесь

Транспонирование матрицы относительно главной диагонали
Почему acmp не засчитывает??? Задана целочисленная квадратная матрица размером N x N. Требуется транспонировать ее относительно...

Транспонирование матрицы через открытый .txt файл
Ребят, кто-нибудь может, пожалуйста, написать, как открыть матрицу через .txt файл, а затем выполнить с ней транспонирование, как показано...

Интервалы и транспонирование
Добавим в класс Note сравнение нот. Сравнивать будем по высоте, без учёта длительности, причём будем считать большей ту ноту, чей тон выше...

Заполнение матрицы с клавиатуры. Транспонирование матрицы
Всем привет. Условие задачи: Напишите программу, которая выводит на экран транспонированную матрицу. Транспонирование матрицы - это...

Транспонирование матрицы
import numpy as np a = np.array (, , ,], "f") arr_transpose = a.transpose() print(arr_transpose) Помогите пожалуйста, нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru