Форум сайта python.su
Есть двумерный список 9 на 9. Необходимо поменять два столбца местами. Попробовал так:
temp1 = obj.genmap[0:8][randj] obj.genmap[0:8][randj] = obj.genmap[0:8][randj1] obj.genmap[0:8][randj1] = temp1[0:8]
Офлайн
вот например один из наглядных и традиционных способов
a = [[0,1,2], [3,4,5], [6,7,8]] cols = (0, 2) for row in a: print row #[0, 1, 2] #[3, 4, 5] #[6, 7, 8] swap = [ row[cols[0]] for row in a ] for row in a: row[cols[0]] = row[cols[1]] for i, row in enumerate(a): row[cols[1]] = swap[i] for row in a: print row #[2, 1, 0] #[5, 4, 3] #[8, 7, 6]
Офлайн
>>> a = [[0,1,2], [3,4,5], [6,7,8]] >>> a=[ [x[1], x[0] ,x[2]] for x in a] >>> print a [[1, 0, 2], [4, 3, 5], [7, 6, 8]]
Офлайн
>>> def swap(index1, index2, iterable): for x in iterable: x[index1],x[index2]=x[index2],x[index1] >>> a [[1, 0, 2], [4, 3, 5], [7, 6, 8]] >>> swap(2, 0 ,a) >>> a [[2, 0, 1], [5, 3, 4], [8, 6, 7]] >>>
Офлайн
Еще можно так извратиться:
def swap(iterable, index1, index2): tmp = list(zip(*iterable)) tmp[index1], tmp[index2] = tmp[index2], tmp[index1] return list(zip(*tmp))
Офлайн