Python lambda
を使用すると、要素が(マップの)別のリストに存在するかどうかを確認し、変数を増やすことができますか?私はラムダを使って自分のコードを最適化/リファクタリングしようとしていますが、私は行って自分自身を混乱させました。リストとインクリメントを検索するラムダ
以下は、ラムダに変換する既存のコードです。 1つのラムダを使用してこれを行うことは可能ですか、2つのラムダを使用する必要がありますか?任意のアドバイスどのようにラムダ/ sに変換することができますか?
current_orders = auth.get_orders()
# returns [{'id': 'foo', 'price': 1.99, ...}, ...]
deleted_orders = auth.cancel_orders()
# returns id's of all cancelled orders [{'id': 'foo'}, {'id': 'bar'}, ...]
# Attempting to convert to lambda
n_deleted = 0
for del_order in deleted_orders:
for order in current_orders:
if del_order['id'] == order['id']:
n_deleted += 1
# lambda
n_deleted = filter(lambda order, n: n += order['id'] in current_orders, deleted_orders)
# end
if n_deleted != len(orders):
logger.error("Failed to cancel all limit orders")
注:私はif len(deleted_orders) < len(current_orders): logger.error("Failed to delete ALL orders")
を言うことができます知っているが、私は...: logger.error("Failed to delete ORDER with ID: %s")
「ラムダ」は、単純な1行の関数を実装するために設計されています。関数を終了させるために1行以上必要な場合は、 'def'を使って関数を作成してください。 –
理想的には 'lambda'関数は副作用を持ってはいけません –