Понимание списка Python – хотите избежать повторной оценкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Понимание списка Python – хотите избежать повторной оценки

Сообщение Anonymous »

У меня есть понимание списка, которое приблизительно равно:

Код: Выделить всё

[f(x) for x in l if f(x)]
Где l — список, а f(x) — дорогостоящая функция, возвращающая список.
I хочу избежать вычисления f(x) дважды для каждого непустого появления f(x). Есть ли какой-нибудь способ сохранить его вывод в рамках понимания списка?
Я мог бы удалить последнее условие, сгенерировать весь список, а затем сократить его, но это кажется расточительным.Было предложено два основных подхода:
Понимание внутреннего генератора:

Код: Выделить всё

[y for y in (f(x) for x in l) if y]
или мемоизация.
Я думаю, что понимание внутреннего генератора элегантно подходит для решения поставленной проблемы. На самом деле я упростила вопрос, чтобы было понятно, очень хочу:

Код: Выделить всё

[g(x, f(x)) for x in l if f(x)]
Я думаю, что в этой более сложной ситуации мемоизация дает более чистый конечный результат.

Подробнее здесь: https://stackoverflow.com/questions/158 ... evaluation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Понимание списка Python – хотите избежать повторной оценки
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Понимание кортежа создает генератор; Понимание списка сразу оценивает все элементы
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как избежать повторной отправки данных при обновлении в php
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как избежать повторной отправки пользователем запроса Ajax POST в приложение Flask, перезаписывая данные?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • AWS Glue и Kafka: как избежать повторной обработки старых записей?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»