【问题标题】:Python String Method ConundrumPython 字符串方法难题
【发布时间】:2011-01-15 21:32:48
【问题描述】:

以下代码应该在删除 SpamWords[0] 后打印 MyWords。然而;而不是返回“是”,而是返回“无”。为什么返回“None”?

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

【问题讨论】:

    标签: python string methods


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      因为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']
      • 还有其他的我可以做到这一点而不必保存到 l 吗?
      猜你喜欢
      • 2015-07-23
      • 2019-03-10
      • 2017-12-24
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2023-04-01
      • 2011-06-28
      • 2022-01-13
      相关资源
      最近更新 更多