Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> странности с массивами! 
V
    Опции темы
RM2010
  Дата 19.3.2010, 19:57 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 29.1.2010

Репутация: -1
Всего: 2



Ребята, привет.
Есть массив figbox который, по сути надо обработать нижеследующим алгоритмом.

       
Код

 a=figbox

        figbox[0]=a[8];   figbox[1]=a[4];   figbox[2]=a[0];   figbox[3]=0
        figbox[4]=a[9];   figbox[5]=a[5];   figbox[6]=a[1];   figbox[7]=0
        figbox[8]=a[10];  figbox[9]=a[6];   figbox[10]=a[2];  figbox[11]=0
        figbox[12]=0;     figbox[13]=0;     figbox[14]=0;     figbox[15]=0



то есть на 0ое место поставить то, что было на 8м, на 1ое то, что было на 4ом, на 2ое, то что было на 0им и т.д.
но почему-то сие не работает и оно пытается так же изменить временный массив 'a' и на выходе получается какой-то компот.

Это сообщение отредактировал(а) Daevaorn - 20.3.2010, 00:32
PM MAIL   Вверх
ToshaCh
Дата 20.3.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 555
Регистрация: 10.11.2005
Где: Москва, РФ

Репутация: нет
Всего: 26



А все питонисты такие недоброжелательные? Между прочим парень отметил самую непонятную для новичка вещь в пистоне, а вы его посту лепите минусы.

Фишка здесь в том, что знак = в питоне не является оператором присваиванивая, точнее он не всегда работает так. В данном случае это создание алиаса. Штудируй документацию, как сделать через ж... по уму. smile



Это сообщение отредактировал(а) ToshaCh - 20.3.2010, 15:34


--------------------
Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 
--
Oracle это не только способ отмывания денег, но и вполне себе преличная база данных.
PM MAIL Jabber   Вверх
Gunjy
Дата 20.3.2010, 19:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.5.2009

Репутация: нет
Всего: нет



Поскольку массивов как таковых в Python нет, то можно попробовать использовать словари.

Создаём и заполняем временный словарь

Код

a = {} # Создаём временный словарь

for i in range(16): # Заполняем его таким образом, что 3-й, 7-й, а также элементы, начиная с 11-го равны нулю

    if i == 3 or i == 7 or i >= 11:
        a[i] = "zero"
    else:
        a[i] = "value" + str(i)
        

I = [8,4,0,3,9,5,1,7,10,6,2,11,12,13,14,15] 
# Создаём список ключей словаря a, в порядке, в котором они будут использоваться при заполнении нового словаря

figbox = {}

for i in range(16): # Заполняем наш новый словарь по порядку от 0 до 15, использую список I
    figbox[i] = a[I[i]]



В итоге получаем словарь a:

Код

{0: 'value0', 1: 'value1', 2: 'value2', 3: 'zero', 4: 'value4', 5: 'value5', 
6: 'value6', 7: 'zero', 8: 'value8', 9: 'value9', 10: 'value10', 
11: 'zero', 12: 'zero', 13: 'zero', 14: 'zero', 15: 'zero'}


Словарь figbox:

Код

{0: 'value8', 1: 'value4', 2: 'value0', 3: 'zero', 4: 'value9', 5: 'value5', 
6: 'value1', 7: 'zero', 8: 'value10', 9: 'value6', 10: 'value2', 11: 'zero', 
12: 'zero', 13: 'zero', 14: 'zero', 15: 'zero'}

PM   Вверх
Fenrir13
Дата 21.3.2010, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.9.2008

Репутация: 1
Всего: 2



Код a = fightbox на самом деле создаёт в a ссылку на fightbox. Для копирования массива можно явно присваивать копию: a = fightbox[:] Запись индекса в виде [:] означает "все элементы".
PM MAIL Jabber   Вверх
RM2010
  Дата 24.3.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 29.1.2010

Репутация: -1
Всего: 2



Ребята, спасибо! Сделал вот так:
Код

a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]           ### creating temp.array
            for i in range(len(figbox)): a[i]=figbox[i]   ### assing values from 'figbox' to temp
            figbox[0]=a[8];   figbox[1]=a[4];   figbox[2]=a[0];   figbox[3]=0   ### turn everything right
            figbox[4]=a[9];   figbox[5]=a[5];   figbox[6]=a[1];   figbox[7]=0   ### turn everything right
            figbox[8]=a[10];  figbox[9]=a[6];   figbox[10]=a[2];  figbox[11]=0   ### turn everything right
            figbox[12]=0;     figbox[13]=0;     figbox[14]=0;     figbox[15]=0   ### turn everything right


А общий результат можно увидеть вот здесь! http://forum.vingrad.ru/forum/act-ST/f-79/...7/unread-1.html

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.