Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2012 19:27:04

zlosnij_dani
Зарегистрирован: 2012-04-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

замена столбцов в двумерном списке

Есть двумерный список 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]

Но меняются местами строки, а не столбцы! В чем секрет?

Офлайн

#2 Апрель 26, 2012 20:02:36

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

замена столбцов в двумерном списке

вот например один из наглядных и традиционных способов

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]

Офлайн

#3 Апрель 27, 2012 06:54:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

замена столбцов в двумерном списке

>>> 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]]



Офлайн

#4 Апрель 27, 2012 07:01:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

замена столбцов в двумерном списке

>>> 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]]
>>> 



Офлайн

#5 Апрель 28, 2012 05:09:07

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

замена столбцов в двумерном списке

Еще можно так извратиться:

def swap(iterable, index1, index2):
    tmp = list(zip(*iterable))
    tmp[index1], tmp[index2] = tmp[index2], tmp[index1]
    return list(zip(*tmp))



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version