2010-02-11 4 views
3

다음 코드는 SpamWords [0]을 제거한 후에 MyWords를 인쇄합니다. 하나; "yes"를 반환하는 대신 "None"을 반환합니다. "None"을 반환하는 이유는 무엇입니까?Python String Method Conundrum

MyWords = "Spam yes" 
SpamWords = ["SPAM"] 
SpamCheckRange = 0 
print ((MyWords.upper()).split()).remove(SpamWords[SpamCheckRange]) 

답변

8

remove 때문에이 호출 년대 변경 가능한 목록 개체를 변경하고 None을 반환하는 방법이다.

l= MyWords.upper().split() 
l.remove(SpamWords[SpamCheckRange]) 
# l is ['YES'] 

은 아마 당신이 원하는 :

>>> [word for word in MyWords.split() if word.upper() not in SpamWords] 
['yes'] 
+0

기술적으로 'l'은'[ 'YES']'입니다. –

+0

좋은 점 ... 대소 문자를 보존하는 버전을 추가했습니다. – bobince

+0

내가 저장하지 않고도이 작업을 수행 할 수 있습니까? – Pax

1

removelist하는 방법 (str.split이 목록을 반환),하지 str입니다. 그것은 원본 목록을 변경하고 (통과 한 항목 삭제) None, 이 아닌 수정 목록을 반환합니다.