Python字符串方法难题

3
以下代码本应该在移除SpamWords[0]后打印MyWords,但实际上返回的是"None"。为什么会返回"None"?
MyWords = "Spam yes"
SpamWords = ["SPAM"]
SpamCheckRange = 0
print ((MyWords.upper()).split()).remove(SpamWords[SpamCheckRange])
2个回答

7

因为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']

从技术上讲,l['YES'] - Mike Graham
有没有其他方法可以完成这个操作,而不必保存到 l 中? - user269857

0

removelist 的一个方法(str.split 返回一个列表),而不是 str。它会改变原始列表(删除传递的内容)并返回 None,而不是修改后的列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接