私はプログラミングとPython、特にPython3に慣れていません。オンラインチュートリアルを使用して、私は 'ラムダ'の使用法を理解しようとしています。したがって、私は次のコードを書き直し、他の名前付き関数、リストの理解、辞書の理解、またはジェネレータを使用したいと思います。しかし、構文と闘う。私はlambdas
を書き換えることができません。匿名関数を書き直すには?
オリジナル機能:
import functools as ft
import itertools as it
import os
import re
import requests
import tempfile
def foo(los, n=None):
n = n or len(los)
h = it.takewhile(lambda p: p[0] < n, enumerate(los))
s = sorted(h, key=lambda p: p[1])
g = it.groupby(s, lambda p: p[1])
return dict(it.starmap(lambda k, vs: (k, sum(map(lambda i: 1, vs))), g))
alist=[1,2,3,1,1,7,8,9,9]
print(foo(alist))
{1: 3, 2: 1, 3: 1, 7: 1, 8: 1, 9: 2}
マイ調整:
lambda args: expression_with_args
機能はなります
def smaller_then_ten(e):
return e[0] < len(e)
def foo(los, n=None):
n = n or len(los)
h = it.takewhile(smaller_then_n, enumerate(los))
s = sorted(h)
g = it.groupby(s)
return dict(it.starmap(lambda k, vs: (k, sum(map(lambda i: 1, vs))), g))
alist=[1,2,3,1,1,7,8,9,9]
print(foo(alist))
Alex Trebekの言葉で、「あなたの応答は質問の形でなければなりません」どうしましたか? – Malvolio
こんにちはMalvolio、私の問題は、私はちょうど異なる機能でラムダを書き換える方法を理解できないということです。 – Mamba
'h = it.takewhile(lambda e:e [0]
martineau