Мой код выглядит следующим образом. Он петлится через капли, которые установлены в frozenset, и проверяет, пересекается ли каждый blob с отображением, которое является множеством. Если blob действительно пересекается с отображением, а также удовлетворяет условию терминальности, добавьте набор пересечений в результат.лучшая структура кода с for, if и set in python
result = set()
for b in blobs:
mapped_b = b & mapped
if mapped_b and _is_terminal(mapped_b):
result.add(mapped_b)
Может ли эта логика быть написана лучше? Я думал о понимании списка, но поскольку mapped_b сформирован на ходу, мне кажется, что я должен сделать это несколько раз, что является расточительным.
[result.add(b&mapped) for b in blobs if b&mapped and _is_terminal(b&mapped)]
Также стоит проблема использовать filter
для if
заявления?
Что вы думаете о 'result = set (filter (lambda b: if b и _is_terminal (b), (b & отображается для b в blobs)))'? Это плохой код? – nos
не по себе, но мой опыт в том, что * установленное понимание * обычно более эффективно (и более элегантно). Afaik 'filter' не ускорит процесс (много). Но он будет иметь семантически тот же результат. –
@nos: обратите внимание, что вы должны сбросить 'if' в' lambda' 'filter'. –