14446
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
Не, ну теперь точно спамбот, который прикидывается дурачком.
Читать полностью…
Сейчас при регистрации новые пользователи получают бонус в размере $1 на баланс для теста. Я не рискую ставить сумму больше, чтобы боты не накручивали и не сливали баланс.
Читать полностью…
Спасибо! Платная реклама сейчас для меня дороговата: проект только запустился, прибыли пока нет, а в разработку и запуск уже и так вложено немало. Действительно непросто на старте.
Читать полностью…
Просто иногда интересно глянуть под капот
Читать полностью…
итератору по смыслу не откуда брать данные, чтобы родить другой итератор. ему придется буферизировать значения для такого
Читать полностью…
В питоне в большинстве случаев объект можно сделать итерируемым через генераторную функцию в __iter__, так что заводить класс под итератор не требуется.
Эт я знаю, вопрос в том, есть ли разница между такой реализацией как у list, когда лист внутри себя создает экземляр класса list_iterator и когда класс внутри себя, создает экземляр самого себя, который тоже итератор.
По сути и первая и вторая реализация делают одно и тоже. только в первом случае это делает через посредника list_iterator а во втором случае экземпляр самого себя. И тот и другой вариант же рабочий. Но во втором случае нет необходимости создавать второй класс как list_iterator чтобы передавать ему создание экземпляра
Но если смысл объекта в том, что он итератор, то в нём и нужно сделать __iter__ и __next__. Только лучше сделать items внутренним атрибутом (self._items = items)
list_iterator — это уже итератор, у него __iter__ возвращает самого себя.
class list:Читать полностью…
def __iter__(self):
return list_iteartor(...)
class list_iterator:
def __iter__(self):
return self
def __next__(self):
...
Я еще узнал, если я конечно правильно все понял, что взависимости от того, какой объект передан в next то под капотом Cpython вызывается сишный iternext для итератора и сишный send с по умолчанию none для генератора
Читать полностью…
Если у тебя условно самописные списки и самописные итераторы для них
Читать полностью…
Ща может по чатам поспамить с рекламой в имени прокатит 😁
Миллионером станет, там и рекламы закупит
Ану расскажи ка в контексте своего проекта как бы ты приготовил вишнёвый пирог?
Читать полностью…
Всем привет! Недавно запустил прокси-сервис (шлюз) для AI API. Цены поставил минимальные, маржа очень низкая, поэтому закупать масштабную платную рекламу попросту нерентабельно.
Подскажите, пожалуйста, где и в каких сообществах/форумах для разработчиков можно легально рассказать о таком проекте, чтобы это не сочли за спам и не забанили?
Буду очень благодарен за любые советы и площадки для органического старта!
хранить ссылку на оригинальный объект может не подойти, из за мутаций
Читать полностью…
Не надо так делать. Итератор должен в своём __iter__ возвращать самого себя
ты в моем примере кода спрашиваешь какой смысл у атрибута Index?
Читать полностью…
Не стоит делать саму коллекцию итератором. Это вводит в заблуждение. (если коллекция используется не как итератор, то какой смысл несёт атрибут index?)
Если хочется сделать объект итерируемым, обычно можно использовать генератор в качестве итератора:
class XsAndYs:Читать полностью…
def __init__(self, xs, ys):
self.xs = xs
self.ys = ys
def __iter__(self):
yield from self.xs
yield from self.ys
Такой вопрос, насколько мне известно итератор у встроенных коллекций реализуется так:
- Допустим это list. Вызывая iter([1,2,3]), аргумент попадает в дандер итер самого класса list у которого под капотом Сpython делается - return list_iterator([1,2,3])
и уже iter класса list_iterator создает возвращает нам объект итератор.
Т.е класс list передает логику создания объекта итератора классу list_iterator
Теперь допустим я хочу создать свой класс, который должен уметь итерировать переданную в него коллекцию чуть по-другому(не важно как, просто чтобы аргументировать причину создания своей логики того, как нужно итерировать).
И вот в своем классе я пишу iter и next и вот мне лень передавать создание нового объекта итератора другому самописному классу - итератор, не хочу я его создавать и делаю внутри этого же своего класса iter(): return Мойкласс([1,2,3]) . Т.е внутри моего же класса реализую создание объекта итератора.
class MyIter:
def __init__(self, items):
self.items = items
self.index = 0
def __iter__(self):
return MyIter(self.items)
def __next__(self):
if self.index >= len(self.items):
raise StopIteration
value = self.items[self.index]
self.index += 2
return value
Ну условно в самом классе итераторе iter ретёрним self
А в пользовательском классе iter return class_iterator(самописный)_(obj)
ну если самописный класс итератор. То у него итер возвращает self, а уже в моем пользовательском классе итер возвращает самописный класс-генератор(список)
Читать полностью…