Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 1
Регистрация: 01.06.2016
Сообщений: 80

Не могу разобраться с циклом For

20.10.2016, 13:06. Показов 917. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста. Есть список players, который состоит из объектов. В цикле идёт проверка каждого атрибута (score) объекта на наличие положительного значения суммы. Если сумма = 0, то объект удаляется из списка.
Если score двух объектов равно нулю, то почему-то первый объект удаляется из списка, а второй остаётся, хотя у него точно такое же значение score. Почему так?
Миниатюры
Не могу разобраться с циклом For   Не могу разобраться с циклом For  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2016, 13:06
Ответы с готовыми решениями:

Не могу разобраться с циклом while
Не могу разобраться с циклом while Нужно чтобы число k менялось поочередно от 1 до 10 и записывалось в выражение "1/(k^8)". ...

Не могу разобраться с циклом
Ребята учу cамостоятельно пайтон. Хочу написать цикл, который срабатывает cразу, когда переменная увеличивается на 1 или уменьшается....

Не могу разобраться с циклом
<?php session_start(); $name = $_POST; $id = $_POST; $foto = $_POST; $xar = $_POST; $price = $_POST; ...

8
23 / 23 / 14
Регистрация: 01.05.2015
Сообщений: 180
20.10.2016, 13:32
Создай копию исходного списка, проходи по нему циклом for и если условие выполняется, то удаляй соответствующий элемент из исходного списка, например:
Python
1
2
3
4
5
6
def qwerty(list_one):
    list_two = list_one
    for item in list_two:
        if item==0:
            list_one.pop(item)
    return list_one
1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
20.10.2016, 13:58
А потому что итератор идёт дальше.

Код логически плохо составлен. Вы смешали две операции. Вывод информации по объектам списка, и изменение состава списка.
Кроме того, удаление элемента по ссылке на сам элемент (вместо индекса) работает медленно.
Что делать?
Вариант 1 - создать новый список из "нужных", ненулевых объектов.
Вариант 2, если кровьизносу надо именно тот список изменить - собрать индексы объектов на удаление, и, проходя его ОТ КОНЦА К НАЧАЛУ, удалить их с помощью оператора del.

Да, и ещё пару советов.
1. pycharm поддерживает копипасту.
2. if player.score - плохо читается. Психологически воспринимается, как boolean.
2
2 / 2 / 1
Регистрация: 01.06.2016
Сообщений: 80
25.10.2016, 18:08  [ТС]
Наверное не самое рациональное решение, но по другому не получилось.
ampermetr, почему-то у меня не получилось сделать так как ты посоветовал. Я создал новый список из "нужных" элементов, как советовал мне dondublon, и затем присвоил его значение исходному списку.
Python
1
2
3
4
5
6
7
8
9
10
11
    def money(self):
        copy = []
        for player in self.players:
            if player.score:
                copy.append(player)
            else:
                print("Игрок ", player, "не имеет денег. Он выбыл.")
        self.players = copy
        print("Оставшиеся игроки: ")
        for q in self.players:
            print(q)
0
Заблокирован
25.10.2016, 21:03
Так будет экономней по памяти и скорости:
Python
1
2
3
4
5
6
7
def money(self):
    def temp(player):
        if player.score:
            return True
        print("Игрок %s не имеет денег. Он выбыл." % player) #такое сложение строк тоже быстрее
        return False # можно удалить так как bool(None) == False     
    self.players = list(filter(temp, self.players))
1
2 / 2 / 1
Регистрация: 01.06.2016
Сообщений: 80
26.10.2016, 16:54  [ТС]
askurandrio, почему в последней строке вызов функции temp без атрибута player? И почему вызов этой функции даже без пустых скобок?
0
Заблокирован
26.10.2016, 21:20
Трудно обьяснить, но есть отличная страница на вики https://ru.wikipedia.org/wiki/... %B0_Python
Такие вещи кстати будет не плохо выучить, целая куча кода становиться легче и быстреё
P.S. Есть еще такая статья: https://habrahabr.ru/post/257903/
1
2 / 2 / 1
Регистрация: 01.06.2016
Сообщений: 80
27.10.2016, 10:33  [ТС]
askurandrio, спасибо, почитаю.
Подскажи ещё. Когда создаёшь класс без наследования, не надо писать в скобках: object? Я так понял, это было в старой версии Питона?
0
Заблокирован
29.10.2016, 19:07
Python
1
2
3
class C:
    pass
C.__mro__ #кортеж родителей класса в нем есть  object, следовательно писать в скопках не надо.
Да, вы поняли правильно
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2016, 19:07
Помогаю со студенческими работами здесь

Не могу разобраться с циклом for
Привет, есть код: int wmId; TC_ITEM tabitem; static HWND d; static HWND tab = {0}; case WM_CREATE: ...

Не могу разобраться с циклом
Перед вами код корзины для Интернет магазина,а если точнее ajax который туда все помещает но он почему-то добавляет только 1 товар а...

Не могу разобраться с циклом
Все привет! Помогите разобраться с циклом... Вообщем проблема такая. Существует две таблицы rub и otzivi. Из первой мне нужно id из...

не могу разобраться с циклом while
Доброго времени суток. Решаю задачку: https://projecteuler.net/problem=3 ну и понятное дело не получается, делал ее на python: ...

Не могу разобраться с циклом
Добрый день! Помогите разобраться с циклом Graph_Painter. По идее, по нажатию кнопки считываются данные из файла и по ним рисуются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru