Ниже приведена простая реализация FIFO в Python. Мой вопрос заключается в том, существует ли уже что-либо эквивалентное в поддерживаемом пакете, особенно что-либо в стандартной библиотеке, поскольку это кажется достаточно обычным делом.
Функциональность: вы должны быть в состоянии добавить и перебрать его как список, но когда итерация дает элемент, внутренняя ссылка на этот элемент должна быть уничтожена.
Вот пример того, что я хочу что с этим делать:
f = Fifo()
# append to it
for i in range(5):
f.append(i)
print("length:", len(f))
# iterate over it, including appending while iterating
for i in f:
print("item:", i)
if i == 3:
f.append("something")
print("all for now")
# iterate again (maybe we didn't previously iterate fully,
# or, as in this example, appended some more items afterwards)
f.append("another thing")
f.append("and another thing")
print("length:", len(f))
for i in f:
print("item:", i)
чтобы дать:
length: 5
item: 0
item: 1
item: 2
item: 3
item: 4
item: something
all for now
length: 2
item: another thing
item: and another thing
А вот моя реализация. (При этом используется словарь. Немного более простая, но менее эффективная альтернатива использует внутренний список.)
class Fifo:
def __init__(self):
self._d = {}
self._cur = 0 # next key to pop
def __len__(self):
return len(self._d)
def append(self, v):
self._d[self._cur + len(self._d)] = v
def __next__(self):
if self._d:
v = self._d.pop(self._cur)
self._cur += 1
return v
else:
raise StopIteration
def __iter__(self):
return self
Подробнее здесь: https://stackoverflow.com/questions/629 ... on-library
Класс FIFO в библиотеке Python? ⇐ Python
Программы на Python
1732878588
Anonymous
Ниже приведена простая реализация FIFO в Python. Мой вопрос заключается в том, существует ли уже что-либо эквивалентное в поддерживаемом пакете, особенно что-либо в стандартной библиотеке, поскольку это кажется достаточно обычным делом.
Функциональность: вы должны быть в состоянии добавить и перебрать его как список, но когда итерация дает элемент, внутренняя ссылка на этот элемент должна быть уничтожена.
Вот пример того, что я хочу что с этим делать:
f = Fifo()
# append to it
for i in range(5):
f.append(i)
print("length:", len(f))
# iterate over it, including appending while iterating
for i in f:
print("item:", i)
if i == 3:
f.append("something")
print("all for now")
# iterate again (maybe we didn't previously iterate fully,
# or, as in this example, appended some more items afterwards)
f.append("another thing")
f.append("and another thing")
print("length:", len(f))
for i in f:
print("item:", i)
чтобы дать:
length: 5
item: 0
item: 1
item: 2
item: 3
item: 4
item: something
all for now
length: 2
item: another thing
item: and another thing
А вот моя реализация. (При этом используется словарь. Немного более простая, но менее эффективная альтернатива использует внутренний список.)
class Fifo:
def __init__(self):
self._d = {}
self._cur = 0 # next key to pop
def __len__(self):
return len(self._d)
def append(self, v):
self._d[self._cur + len(self._d)] = v
def __next__(self):
if self._d:
v = self._d.pop(self._cur)
self._cur += 1
return v
else:
raise StopIteration
def __iter__(self):
return self
Подробнее здесь: [url]https://stackoverflow.com/questions/62978186/fifo-class-in-python-library[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия