2010-02-11 53 views
3

下面的代碼應該在刪除SpamWords [0]後打印MyWords。然而;而不是返回「是」,而是返回「無」。爲什麼它返回「無」?Python字符串方法難題

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']'。 – 2010-02-11 20:52:07

+0

好點...增加版本,保留情況。 – bobince 2010-02-11 20:54:32

+0

有沒有另一個我可以做到這一點,而不必保存到l? – Pax 2010-02-11 20:55:50

1

removelist方法(str.split返回一個列表),而不是str。它會改變原始列表(刪除通過的內容)並返回None,而不是的修改列表。