![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Chuck |
|
||||
![]() Сушня ![]() ![]() Профиль Группа: Эксперт Сообщений: 442 Регистрация: 12.12.2003 Где: Узбекистан, Ташке нт Репутация: нет Всего: 9 |
Нужно создать что то типа
Это сообщение отредактировал(а) Chuck - 29.8.2006, 15:33 |
||||
|
|||||
J2A |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Вопрос в чем?
--------------------
Be easy, stay cool |
|||
|
||||
Chuck |
|
|||
![]() Сушня ![]() ![]() Профиль Группа: Эксперт Сообщений: 442 Регистрация: 12.12.2003 Где: Узбекистан, Ташке нт Репутация: нет Всего: 9 |
Правильно ли я делаю, какие еще есть способы загрузки массива? Если можно, с примерами! |
|||
|
||||
setq |
|
|||
Unregistered |
Неправильно, потому что словари под a[1] и a[2] сами по себе не появятся. Хотя в Python 2.5 можно попробовать реализовать это через defaultdict.
Если не 2.5, то пиши нужные индексы "руками" или реализуй свой класс defaultdict. А... Да. Пример. "Руками":
Это сообщение отредактировал(а) setq - 29.8.2006, 16:15 |
|||
|
||||
Chuck |
|
|||
![]() Сушня ![]() ![]() Профиль Группа: Эксперт Сообщений: 442 Регистрация: 12.12.2003 Где: Узбекистан, Ташке нт Репутация: нет Всего: 9 |
А в случае класса как быть, я в Питоне новичок, подскажите.
|
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
А если кортежем попробовать словарь индексировать?
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Artemios, отличное решение в общем случае (даже немного быстрее, чем словарь словарей), но если потребуется найти все значения с заданным первым ключом, не зная наперёд значения второго ключа, он будет существенно менее удобен. Так что тут надо исходить из задачи.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
setq |
|
|||
Unregistered |
Artemios, идея да, хорошая)
Chuck, общая схема такая: наследуем от dict свой класс, переопределяем метод __getitem__(self, x) чтобы он в случае отсутствия ключа, связывал его с {}.
|
|||
|
||||
albertn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Я бы сделал вот так, и не мучился:
|
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
При помощи класса:
|
|||
|
||||
Chuck |
|
||||
![]() Сушня ![]() ![]() Профиль Группа: Эксперт Сообщений: 442 Регистрация: 12.12.2003 Где: Узбекистан, Ташке нт Репутация: нет Всего: 9 |
Что то не получается ... Ошибка
Это сообщение отредактировал(а) Chuck - 30.8.2006, 15:03 |
||||
|
|||||
Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Chuck, переменная класса itemscount не глобальная: обращаться к ней надо либо как self.itemscount, либо как Messages.itemscount.
Во-вторых, вот так:
нельзя, надо
А что за задача, поподробнее нельзя? Может лучше БД использовать? Например, SQLite in-memory database много оверхеда не создаст. Это сообщение отредактировал(а) Void - 30.8.2006, 16:16 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
Artemios |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
или
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||||
|
|||||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
Artemios, а какой вариант быстрее?
|
|||
|
||||
Artemios |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
pythonwin,
Как мне кажется, самый первый вариант
во втором варианте чуть замедлит конкатенация строк
но в print-е это уже неимеет значения, т.к. I/O операции выполняются гораздо дольше, и поэтому самый медленный - мой вариант, так как нискоуровневый I/O здесь, кажись, выполняется для каждого аргумента поотдельности - значит здесь 3 раза:
Это сообщение отредактировал(а) Artemios - 1.9.2006, 00:28 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||||
|
|||||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |