【问题标题】:List contains exactly three of the same elements?List 正好包含三个相同的元素?
【发布时间】:2017-02-08 12:11:17
【问题描述】:

如果列表包含三个相同的整数,这将返回布尔值 True。如果它没有三个相同的整数,它将返回一个布尔值 False。我很难写这个。计数功能会这样做吗?另外,是否需要导入一个空列表?我有这个,我得到错误“'int'对象没有属性'count'”。谢谢!

    def threeOfAKind(aList,n):
       if aList.count(n):
           return True
       else:
           return False

threeOfAKind([1,2,3,4,4,4],4]) 应该返回 True 我尝试了 aList.count(n) 但现在无论我怎么称呼我都得到 True

【问题讨论】:

  • 你是怎么调用那个方法的?因为根据错误,您显然将 n 作为整数传递,这解释了您遇到的错误。
  • threeOfAKind([1,2,3,4,4,4],4]) 这应该返回 True
  • 把它放在你的问题中。你明白为什么你会收到你的错误信息吗?您是否意识到 n 实际上是您在方法中传递的整数 4?您正在尝试在整数上调用 count,消息告诉您 int 没有属性 count
  • 这是有道理的,我知道我试图在一个整数上调用 count,那么我应该把 3 放在哪里呢?我明白你在说什么,但我仍然不知道该写什么
  • 好的。我希望您尝试自己解决这个问题:) 让我给您一个提示。 aList.count(x)。你认为x 应该是什么。阅读列表计数的作用。您的代码中缺少最后一件事,以检查您是否真的拥有三个。如果您仍然无法弄清楚,请在几分钟内更新您的问题。

标签: python list count integer


【解决方案1】:

这一行:

if aList.count(n):

是你的代码不工作的原因。

listcount 函数返回列表中n 的出现次数。如果您的参数是 [1,2,3,4,4,4] 和 4,aList.count(n) 将返回 3,因为 4 在列表中出现了 3 次。

所以上面这行代码基本上是这样的:

if 3:

现在 3 将被转换为布尔值,因为这是 if 条件所期望的。如果您想知道 3 转换为 True 或 False,只需在交互式 Python 解释器中尝试 bool(3)

您想要检查n 是否在列表中出现3 次,因此您可能需要将aList.count(n) 的返回值与某些东西进行比较?如果aList.count(n) 返回 2 或 4,您显然不想返回 True,对吗?

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2019-08-24
    相关资源
    最近更新 更多