您的位置:首页技术文章
文章详情页

关于python统计一个整数列表中不同数值种类数的问题。

浏览:96日期:2022-06-27 18:17:55

问题描述

下面这段代码中,kind_num用于统计那个整数列表中有几种不同数值的整数。

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循环,没有取完candies里面的值就提前退出了,这是为什么???关于python统计一个整数列表中不同数值种类数的问题。

问题解答

回答1:

在循环里不要去remove

如果你仅仅是想实现统计不同种类的值

#统计出现次数lst = [1,1,2,2,3,3,4,4,5,6]print len(set(lst))#统计每种各出现几次from collections import Counterprint dict(Counter(lst))回答2:

candies.remove(candy) 第一次执行 Ok, candy被remove; 由于while (True), 在同一次For 循环中 会无限remove 这个candy,但是这个candy 已经在第一次被移除了。所以break.

回答3:

from collections import defaultdictd = defaultdict(int)for item in your_list: d[item] += 1 print d

标签: Python 编程
相关文章: