オペレーションアルゴリズム文字列(ラムダ式)

995 ワード

ラムダ式:識別子のない実行可能な関数。関数宣言はなく、関数を簡単に表すこともできます。


主により簡潔で可読性の高いリスト理解(list completion)が用いられるため、ramdaの方が使いやすい場合には、一部を用いることができる.
例題
ログファイルの並べ替えの問題
質問に答える:これは質問で、あなたの要求がどれだけ簡潔であるかを尋ねます.実際の仕事では、このような論理もよく使われているので、非常に実用的な問題です.
プールコード:
# 로그를 재정렬 하라. 기준은 다음과 같다.
# 1. 로그의 가장 앞부분은 식별자다.
# 2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
# 3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.
# 4. 숫자 로그는 입력 순서대로 한다.

# 입력값 log[i] =(3,100) , logs.length = (1,100) 가능

# 출력 기준에 맞게 재정렬한 logs.
letters, digits = [],[]
for log in logs :
    if log.split()[1].isdigit() :  #문자와 숫자를 구별하기 위해 식별자를 빼고 먼저 구분하고 나눠준다.
        digits.append(log)
    else :
        letters.append(log)    

letters.sort(key=lambda x : (x.split()[1:], x.split()[0])) 
# 식별자를 제외한 문자열 [1:]을 키로 정렬하며 동일한 경우 후순위로 식별자[0]을 지정해정렬되도록 람다 표현식을 이용해 정렬했다. 

return letters + digits