1
我正在使用以下代碼。爲什麼我的函數的輸出仍然包含數值?Python:刪除非字母字
功能
def removeNonAplhabet(inputlist):
for w in inputlist:
if ((w.isalnum()==True) or ((w.isdigit()==True))):
inputlist.remove(w);
return inputlist;
主程序
filtered_words=removeNonAplhabet(word_list);
print ('Removing Non Alphabetical Characters')
print (filtered_words)
輸出
['13', '1999', '2001', '280', 'amazon', 'another', 'april']
感謝您的快速結果。這工作正常。但是,你可以在上面的代碼中指出問題嗎?我很想知道我做錯了什麼。 – Incpetor 2014-10-12 08:19:43
詳細說明:如果您有一個列表['word','word'word'],並且您遍歷該列表以刪除非數字字符串,則結果將爲['word']。爲什麼是這樣?那麼首先評估並刪除索引位置0處的第一個字符串,然後將所有其他字符串向下移位。但是你的電腦認爲它已經處理了位於索引位置0的字符串,所以它不會重新評估它。這意味着它會留在你的列表中...希望這有助於。 – 2014-10-12 08:21:41
@ Inceptor361,迭代序列時刪除元素,使內部指針損壞。 – falsetru 2014-10-12 08:24:38