Форум сайта python.su
Пользователь вводит номера столбцов, которые нужно поменять местами между собой. Как поменять в 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)
Офлайн
У тебя a и new ссылаются на один и тот же объект. Т.е. при изменении new у тебя будет меняться a и наоборот.
Отредактировано Rodegast (Окт. 10, 2017 17:14:34)
Офлайн
у думал об этом, пробовав создать список с тем же кол-вом столбцов и строк как в а и туда уже записывать, но тоже не помогало
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]))
Офлайн
Если по нубски, то вот
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]
Офлайн
Может я что-то неверно понял, но в общем, задача-то очень проста:
>>> 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]]
Офлайн
> Может я что-то неверно понял, но в общем, задача-то очень проста:
ТС уже знает про этот вариант.
Офлайн