2017-03-17 1 views
0

인터넷에서 람다 함수를 발견했습니다. 나는 그것을 사용하고 정확하게 출력을 받고있다. 그러나 나는 나의 요구 사항에 맞게 기능을 변경할 수 있도록 설명을 알아야한다.람다 함수 설명

이 기능은 내가 가지고있는 목록에서 반복되는 데이터를 제거합니다. 그러나 나는 L과 X 값들이 어떻게 진행되고 있는지를 알 수 없다. 또한 내가 .append (x) 나 내가 여기서 무엇을하는지. 어느 조건에서 어떤 것을 고를 것입니다. 설명 해주십시오. 우리가 열 [ "안녕하세요"]

repeating_data = reduce(lambda l, x: 
          l.append(x) or l if x not in l else l, 
          columns['Hello'], []) 

감사 록키이있다 [1,1,2,3,4,5,6,6,7,8,9,9,10,0] 가정하자

+5

이것은 매우 좋지 않은 * 코드입니다. 나는 그것을 전부 고치기 만 할 것이다. 기능적 구조의 내부에서 돌연변이 상태는 '아니오'입니다. 또한 다항식 런타임의 복잡성으로 극도로 비효율적입니다. –

+1

혹시'pandas' 데이터 프레임을 사용하고 있습니까? –

답변

1

나는 복잡한 λ 함수를 통해 코드를 읽을 수 없다는 것에 동의한다.

람다 함수

def ext_function(columns['Hello']): 
    #Empty list to accumulate values 
    l = [] 
    #Iterate through column 
    for x in columns['Hello']:   
     #if col_value not in l , append 
     if x not in l: 
      l.append(x) 
    return l 

그리고 reduce 함수 []를 입력리스트 컬럼 [ '안녕하세요'] 및 누산기 순서 lambda 함수를 적용하고, (주석) 아래에 대략 등가이다.

솔직히 중복을 없애려는 경우 한 줄로 동일하게 처리 할 수 ​​있습니다.

l = list(set(Columns["Hello"])) 

희망이 도움이됩니다.

+0

설명 모두를 주셔서 감사합니다 –

+0

@HyderTom, 내 대답이 당신이 찾고있는 것이라면,이 질문에 답이없는 것처럼 도움이 될 답변을 수락하는 것을 고려하십시오. –

+0

어디서 할 수 있습니까? –

1

목록에서 고유 항목을 찾으려면 set을 사용합니다.

unique_items = list(set(columns["Hello"])) 

코드의 조각에 무슨 일이 일어나고 있는지 설명하기 위해, 트릭 reduce에 있으며 lambda 너무 많이하지. 높은 수준에서 람다는 고유성 검사를 수행하고 목록에서 람다 함수로 항목을 전달하는 것을 줄입니다.

그 코드의 람다 일부를 설명은 람다 2 개 입력, LX를 취하고 발현로 전달되는 경우의 함수 객체를 생성, (l.append(x) or l) if x not in l else l는 l.append 주위 (X 중괄호 추가) 또는 l, 나머지는 단지 else 문이므로 읽는 것이 더 쉬워집니다.

이전에 언급했듯이 실제로 작동하는 방식을 이해하려면 트릭이 줄어들고 링크 된 파이썬 문서가이를 설명하는 매우 훌륭한 작업을 수행합니다.