최대 1 분 소요

딥러닝을 이용한 자연어처리 입문 공부 중 이중 for문을 한줄로 쓰는 부분이 헷갈려서 한번 포스팅하려 한다..

  • 이중 for문 한줄로 쓰기

    import pandas as pd # 데이터프레임 사용을 위해
    from math import log # IDF 계산을 위해
      
    docs = [
      '먹고 싶은 사과',
      '먹고 싶은 바나나',
      '길고 노란 바나나 바나나',
      '저는 과일이 좋아요'
    ] 
    vocab = list(set(w for doc in docs for w in doc.split()))
    vocab.sort()
      
    

    위에서 언급한 부분인데, vocab을 할당한 부분을 보면 이중 for문을 한줄로 써놨다.

    이 코드가 하는 일은 docs에 있는 문자열들을 띄어쓰기 기준으로 분리한 후, 중복되지 않게 리스트로 만드는 일이다.

    vocab = list(set(w for doc in docs for w in doc.split()))
    

    위 코드를 풀어서 쓰면

    docs = [
      '먹고 싶은 사과',
      '먹고 싶은 바나나',
      '길고 노란 바나나 바나나',
      '저는 과일이 좋아요'
    ] 
      
    vocab = []
    for doc in docs :
        for word in doc.split() :
            vocab.append(word)
              
    vocab = list(set(vocab))
      
    print(vocab)
    

    doc.split()은 리스트 타입이다.

    실행 결과

    # ['노란', '싶은', '바나나', '먹고', '저는', '과일이', '사과', '길고', '좋아요']
    

단순히 겹쳐진 for문을 위에서부터 차례대로 한줄로 쓰면 된다.

댓글남기기