問題是,您只是檢查第一個值,然後返回True
或False
。代替這樣做如下:
1)
def has23(nums):
if (2 in nums) or (3 in nums):
return True
else:
return False
2)@Ricardo
提示:return (2 in nums) or (3 in nums)
3)@thefourtheye
提示:return len(set(nums) & {2, 3}) > 0
4)@thefourtheye
還建議return set(nums).isdisjoint({2, 3})
5)@RemcoGerlich
建議return any(i == 2 or i == 3 for i in nums)
6),或者如果你想使用你的循環的類型:
def has23(nums):
for i in nums:
if i == 2 or i == 3:
return True
return False
[注]
我用lambda測試這個問題,這裏是測試任何數量的檢查的方法: 這將檢查to_check
任何元素是否在lst
7)
>>> lst = [1,2,4,7,4,10,53,76,45,354,654,434,32]
>>> to_check = [3,4,9,96,23]
>>> print any(map(lambda i: i in lst, to_check))
True
我知道這是不是直接關係到你的問題,但它可能是看一下。非常漂亮。
另一種方式:
8)
>>> print len(set(bar) & set(to_check)) > 0
你不需要的範圍 – adarsh
當給出一個列表時,它不會返回False,因爲'range()'不會將列表作爲參數。 – geoffspear