2016-10-01 71 views
-2

python非常新...如果我给出一个有两个整数n和k的列表,函数应该返回布尔值True。 K必须在列表中n次。例如,如果我调用matchingValues([1,2,1,4,1,1],1,4)应该返回True,因为1在列表中是4次。我猜我不得不使用.Count中()选项,但不知道怎么写呢......希望我可以给更多的代码,但不幸的是,我很失落比涉及len()是一个解决方案函数返回True如果列表中的整数k和n?

def matchingValues(aList,n,k): 
+0

做5次1的返回false? – AChampion

+0

看起来你希望我们为你写一些代码。尽管许多用户愿意为遇险的编码人员编写代码,但他们通常只在海报已尝试自行解决问题时才提供帮助。展示这一努力的一个好方法是包含迄今为止编写的代码,示例输入(如果有的话),期望的输出以及实际获得的输出(输出,回溯等)。您提供的细节越多,您可能会收到的答案就越多。检查[FAQ](http://stackoverflow.com/tour)和[如何提问](http://stackoverflow.com/questions/how-to-ask)。 – TigerhawkT3

回答

1

你想要做的是确定哪些计数了多少次,n是在列表

found = 0 

,然后一个变量,迭代名单及循环

for x in range(0, len(aList)): 
    if aList[x] == n: 
     found += 1 
return(found == k) 

这是,但是,如果要避免使用count功能:

return(aList.count(n)==k) 

使用ma当你知道列表中有kn s时,如果你想让循环像那样工作(但是,我没有提供那个代码,手写循环将允许你退出循环。我只写什么count一样)

如果你希望有至少kn S IN aList,这会为你工作

found = 0 
for x in range(0, len(aList)): 
    if aList[x] == n: 
     found += 1 
     if found == k: 
      return True 
return False 
1

更好对列表使用.count()方法。它接受一个参数,并返回该参数出现在被调用的列表中的次数。

+0

从技术上讲,如果'aList'可能很大,并且计数在早期满足,即使“aList”的第一个“k”条目是“n”,.count也会完成计数。无可否认,在典型的情况下,'count'更简单快捷,将更多的工作推给解释器,这可以比手写循环更快。编辑:重读OP时,可能需要正好'k',而不是'k',所以可能不会短路? – ShadowRanger

+0

确实如此。取决于你期望'aList'有多大。 –

+0

当你看到k + 1时你可以缩短:返回False,但不能缩短True。 – AChampion