Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 10, 2017 17:08:59

Helseeret
Зарегистрирован: 2017-10-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена ячеек столбцов двумерного списка(матрицы)

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

 a = new = [[11,12,13],[21,22,23],[31,32,33]]
x = 1
y = 0
for i in range(3):
    for j in range(3):
        if j == x:
            new[i][j] = a[i][y]
        if j == y:
            new[i][j] = a[i][x]
        else:
            new[i][j] = a[i][j]
for row in new:
    print(' '.join([str(elem) for elem in row]))

Отредактировано Helseeret (Окт. 10, 2017 17:09:30)

Офлайн

#2 Окт. 10, 2017 17:13:30

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Замена ячеек столбцов двумерного списка(матрицы)

У тебя a и new ссылаются на один и тот же объект. Т.е. при изменении new у тебя будет меняться a и наоборот.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Окт. 10, 2017 17:14:34)

Офлайн

#3 Окт. 10, 2017 18:00:04

Helseeret
Зарегистрирован: 2017-10-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена ячеек столбцов двумерного списка(матрицы)

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

 a = [[11,12,13],[21,22,23],[31,32,33]]
new = [[0] * 3 for i in range(3)]
x = 1
y = 0
for i in range(3):
    for j in range(3):
        if j == x:
            new[i][j] = a[i][y]
        if j == y:
            new[i][j] = a[i][x]
        else:
            new[i][j] = a[i][j]
for row in new:
    print(' '.join([str(elem) for elem in row]))

Офлайн

#4 Окт. 10, 2017 18:41:03

Vintets
Зарегистрирован: 2016-07-05
Сообщения: 41
Репутация: +  6  -
Профиль   Отправить e-mail  

Замена ячеек столбцов двумерного списка(матрицы)

Если по нубски, то вот

 a = [[11,12,13],[21,22,23],[31,32,33]]
x, y = 1, 0
for i in a:
    i[x], i[y] = i[y], i[x]

Офлайн

#5 Окт. 11, 2017 03:11:59

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Замена ячеек столбцов двумерного списка(матрицы)

Может я что-то неверно понял, но в общем, задача-то очень проста:

 >>> x=[[1,2,3], [4,5,6],[7,8,9]]
>>> i, j=1, 2
>>> x[i], x[j] = x[j], x[i]
>>> x
[[1, 2, 3], [7, 8, 9], [4, 5, 6]]

Мы считаем, что вложенные списки – это строки матрицы. Хорошо, это наш выбор. Давайте, теперь считать
их столбцами. Задача будет иметь тоже решение… ?!

Офлайн

#6 Окт. 11, 2017 10:45:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Замена ячеек столбцов двумерного списка(матрицы)

> Может я что-то неверно понял, но в общем, задача-то очень проста:

ТС уже знает про этот вариант.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version