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

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

21.02.2018, 17:40. Показов 33517. Ответов 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 / 2083 / 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
4888 / 2822 / 865
Регистрация: 04.10.2012
Сообщений: 10,264
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 / 2083 / 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
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
20.03.2019, 10:32
Цитата Сообщение от Realdreamer Посмотреть сообщение
Жаль что он не дал нам наводку как решить это.

Не по теме:

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


Присвоить той же самой переменной?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 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
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru