2015-01-29 1 views
1

다른 소스에서이 코드를 재활용하려고하는데 두 번째 줄에 for 루프를 이해하는 데 문제가 있습니다. 누군가 정확히이 줄이 무엇인지 명확히 할 수 있습니까 title = [x for x in title if x not in stopWords]은 무엇을하고 있습니까? stopWords은 단어 목록입니다.다른 사람이이 코드를 파이썬에서 이해하도록 도울 수 있습니까?

def title_score(title, sentence): 

    title = [x for x in title if x not in stopWords] 
    count = 0.0 
    for word in sentence: 
     if (word not in stopWords and word in title): 
      count += 1.0 

    if len(title) == 0: 
     return 0.0 

    return count/len(title) 

답변

2
[x for x in title if x not in stopWords] 

목록의 이해입니다. 즉, title (x for x in title 비트)에있는 모든 항목의 목록을 stopWords (if x not in stopWords 비트 단위)에도 포함하지 않는 것입니다.


다음 스 니펫과 유사한 효과가 나타납니다. ,


>>> [x for x in range(10) if x % 2 != 0] 
[1, 3, 5, 7, 9] 
그리고 여기에 아마도 더 좋은 예입니다 : 홀수 번호를 포함에

>>> [x for x in range(10)] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

두 번째는 if 절을 추가합니다 : 첫 번째는 포괄적 인 범위 0..9에있는 모든 수의 목록을 만듭니다 코드와 더욱 밀접하게 조화를 이루어야합니다.

마지막 단계에서 "노이즈"단어가 제거 된 것을보십시오. 이 루프에 해당 지능형리스트입니다

0

아니라, 그들은 파이썬이 실행 가능한 의사 같다고 말하고 나는 여기에 적용 같아요. 목록을 작성하고 해당 항목이 내부에없는 제목 안에 모든 항목을 넣고 있습니다. stopWords

0

: 그들은 또한 stopwords에 나타나는 경우

newtitle = [] 
for x in title: 
    if x not in stopwords; 
     newtitle.append(x) 
title = newtitle 

즉, 그것은 효과적으로 title에서 단어를 제거합니다.

관련 문제