![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Всем, привет!
Вообще-то я программирую на Perl, но с недавних пор начал изучать Python. Приобрёл книгу 'Освой самостоятельно Python за 24 часа' Автор: Иван ван Лейнингем Дошёл до списков, немного поэксперементировал и вот что заметил: Допустим у нас есть список содержащий в себе цифры и буквы. Пытаюсь сделать так, что бы в списке остались только буквы, как показано ниже.
После получаю такой результат: Элемент " a " оставлен Элемент " x " оставлен Элемент " 2 " удалён Элемент " 5 " удалён Элемент " 11 " удалён Элемент " f " оставлен Элемент " j " оставлен Как видите, всё вроде нормально, но элемент 8 остался. После пишу туже программу в IDLE, но результат остался тот же. Затем пробую в IDLE вывести на стандартное устройство вывода весь список, получаю такой результат: ['a', 'x', 'y', 8, 'b', 'f', 'j']. Можно заметить и здесь восьмёрку. ![]() Элемент " a " оставлен Элемент " x " оставлен Элемент " y " оставлен Элемент " 8 " удалён Элемент " f " оставлен Элемент " j " оставлен В IDLE, вывожу на экран весь список print spisok в результате получаю: ['a', 'x', 'y', 'b', 'f', 'j'] Как видно из примера, мы избавились от восьмёрки только после второго цикла for. Вопросы: 1. Почему после первого цикла цира 8 не была удалена из списка? 2. Почему после второго цикла цифра 8 была удалена из списка? Заранее благодарен, Денис Это сообщение отредактировал(а) korob2001 - 28.2.2004, 01:35 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Хе, а я, вроде, понял.
![]() Давайте еще раз глянем на результат работы программы, а именно:
Да, тут ничего не сказано про 8. Его нет ни в сообщении об удаленни, так и в сообщении о том, что этот элемент оставлен. Смотрим дальше.. А где же 'b'?! Или 'y'? Про него тоже ни слова.. Получается, что пропускается елемент, следующий за удаленным. Но так и должно быть! Как я догадываюсь, в конструкции for.. in .. также существует счетчик, к-й увеличивается при каждом проходе цикла. Если делать по шагам: 1) дошли до числа 2. Счетчик соответственно равен 3 (я буду считать от 1 - так проще в данной ситуации); 2) удаляем этот элемент; 3) увеличиваем счетчик (т.е. теперь он равен 4); 4) смотрим элемент с номером 4 В ОБНОВЛЕННОМ СПИСКЕ (к-й получился после удаления). Это число 5! Получается, что мы пропустили 'y'. Так же и в остальных случаях. З.Ы. Сорри, что поднимаю старую тему, но как-то интересно стало, да и ответов не было.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
setq |
|
|||
Unregistered |
да уж, надеюсь korob2001 уже отыскал решение и не забросил python.
я слышал, что не рекомендуется изменять тот список по которому делается цикл. если бы передо мной поставили ту же задачу, я лично бы отдал предпочтение функциям работы со списками. тому же filter |
|||
|
||||
simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: нет Всего: 36 |
Это точно. Читал где-то в мануалах, но понял на собственном опыте ![]() -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Нашёл, уже давно. ;)
Но, все-равно, спасибо. Сам Python язык прикольный, но меня вот что не прикололо: его поддержка. Найти толковый форум по Python удалось только спустя пол года, после того как начал его изучать. Но и там только 1-2 человека активных. А так ответы, в лучшем случае, получал через 2 - 3 недели, в худшем, вообще не получал. ;) -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Kurt |
|
||||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Честно говоря, меня тоже сильно смущает его поддержка, а кроме того, не покидает ощущение недоделанности.
З.Ы.
Ну, давай тут сделаем толковый форум. ![]() ..
Раз уж заговорили (сорри за оффтоп..), не подскажешь, где обоснован выбор имено Python'a? Для каких задач? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||
|
|||||
setq |
|
|||
Unregistered |
в свою очередь тоже сорри за оффтоп, просто я решаю задачи, которые обычно решаются на Perl и я не люблю Perl.
|
|||
|
||||
korob2001 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Поддерживаю.
Чем же Perl тебя так не устроил? Только не подумай что я придераюсь, просто интересно, я например его обажаю.
Впринципе на Perl можно написать всё, что можно написать и на Python и наоборот. Но объектная модэль Python, очень похожа на Java. А выучить Java, это моя мечта. Говорят что Python приучает к хорошему стилю программирования, да и к тому же это язык, очень интенсивно, набирает силу. Это сообщение отредактировал(а) korob2001 - 13.11.2004, 21:39 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||
|
|||||||
setq |
|
|||
Unregistered |
даже не знаю что ответить, korob2001. просто не нравится.
|
|||
|
||||
foRaver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 561 Регистрация: 6.7.2003 Где: Düsseldorf Репутация: нет Всего: 3 |
||||
|
||||
korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Да и ладно, дело хозяйское ;). Я, например, тоже не могу объяснить, почему мне нравится Perl.
Здесь лежат модули под Perl. Лично я никогда этим не пользовался, но помоему они как-раз для работы с OpenGL. http://search.cpan.org/search?query=OpenGL&mode=all Это сообщение отредактировал(а) korob2001 - 17.11.2004, 23:11 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |