關(guān)于python統(tǒng)計(jì)一個整數(shù)列表中不同數(shù)值種類數(shù)的問題。
問題描述
下面這段代碼中,kind_num用于統(tǒng)計(jì)那個整數(shù)列表中有幾種不同數(shù)值的整數(shù)。
class Solution(object): def distributeCandies(self, candies):''':type candies: List[int]:rtype: int'''loc = len(candies)mol = loc % 2if 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 = 0sis_num = loc / 2for candy in candies: kind_num += 1 while True:try: candies.remove(candy) print candiesexcept ValueError: breakif kind_num > sis_num: return sis_numelif kind_num < sis_num: return kind_numelse: return sis_nums = Solution()print s.distributeCandies([1,1,2,2,3,3])
但是第二個for循環(huán),沒有取完candies里面的值就提前退出了,這是為什么???
問題解答
回答1:在循環(huán)里不要去remove
如果你僅僅是想實(shí)現(xiàn)統(tǒng)計(jì)不同種類的值
#統(tǒng)計(jì)出現(xiàn)次數(shù)lst = [1,1,2,2,3,3,4,4,5,6]print len(set(lst))#統(tǒng)計(jì)每種各出現(xiàn)幾次from collections import Counterprint dict(Counter(lst))回答2:
candies.remove(candy) 第一次執(zhí)行 Ok, candy被remove; 由于while (True), 在同一次For 循環(huán)中 會無限r(nóng)emove 這個candy,但是這個candy 已經(jīng)在第一次被移除了。所以break.
回答3:from collections import defaultdictd = defaultdict(int)for item in your_list: d[item] += 1 print d
相關(guān)文章:
1. mysql優(yōu)化 - 關(guān)于mysql分區(qū)2. php laravel框架模型作用域3. vue.js - vue 打包后 nginx 服務(wù)端API請求跨域問題無法解決。4. node.js - 在vuejs-templates/webpack中dev-server.js里為什么要exports readyPromise?5. java - Atom中文問題6. 請教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒有反應(yīng)7. objective-c - iOS開發(fā)支付寶和微信支付完成為什么跳轉(zhuǎn)到了之前開發(fā)的一個app?8. javascript - 為什么這個點(diǎn)擊事件需要點(diǎn)擊兩次才有效果9. html5 - 如何實(shí)現(xiàn)帶陰影的不規(guī)則容器?10. javascript - ionic2 input autofocus 電腦成功,iOS手機(jī)鍵盤不彈出
