下面這段程式碼中,kind_num用來統計那個整數列表中有幾個不同數值的整數。
class Solution(object):
def distributeCandies(self, candies):
"""
:type candies: List[int]
:rtype: int
"""
loc = len(candies)
mol = loc % 2
if not (2 <= loc <= 10000) or mol != 0:
return 'wrong length of array'
for num in candies:
if not (-10000 <= num <= 10000):
return 'wrong element in array'
kind_num = 0
sis_num = loc / 2
for candy in candies:
kind_num += 1
while True:
try:
candies.remove(candy)
print candies
except ValueError:
break
if kind_num > sis_num:
return sis_num
elif kind_num < sis_num:
return kind_num
else:
return sis_num
s = Solution()
print s.distributeCandies([1,1,2,2,3,3])
但是第二個for循環,沒有取完candies裡面的值就提前退出了,這是為什麼? ? ?
在循環裡不要去remove
如果你只是想實現統計不同種類的值
candies.remove(candy) 第一次執行 Ok, candy被remove; 由於while (True), 在同一次For 循環中 會無限remove 這個candy,但是這個candy 已經在第一次被移除了。所以break.
雷雷