好的,必须有一个更清洁的方法来做到这一点。我仍然是业余程序员,但我觉得他们有一些东西可以缩短这一点。所以基本上我有这个数字数据集,并且我将1,2,3,4,5,6,7,8,9的出现计为第一个数字,然后将计数附加到列表中。这肯定似乎很长,我必须这样做
countList = []
for elm in pop_num:
s = str(elm)
if (s[0] == '1'):
count1 += 1
if (s[0] == '2'):
count2 += 1
if (s[0] == '3'):
count3 += 1
if (s[0] == '4'):
count4 += 1
if (s[0] == '5'):
count5 += 1
if (s[0] == '6'):
count6 += 1
if (s[0] == '7'):
count7 += 1
if (s[0] == '8'):
count8 += 1
if (s[0] == '9'):
count9 += 1
countList.append(count1)
countList.append(count2)
countList.append(count3)
countList.append(count4)
countList.append(count5)
countList.append(count6)
countList.append(count7)
countList.append(count8)
countList.append(count9)
答案 0 :(得分:2)
你可以使用collections.Counter
(基本上是一个专门用于计算事物的特殊字典)和列表推导(用于编写简单循环的更简洁的语法)在两行中执行此操作。
我是这样做的。
import collections
counts = collections.Counter(str(x)[0] for x in pop_num)
countList = [counts[str(i)] for i in range(1,10)]
编辑:以下是如何在不使用collections
的情况下获得等效功能。
counts = {}
for x in pop_num:
k = str(x)[0]
counts.setdefault(k, 0)
counts[k] += 1
countList = [counts[str(i)] for i in range(1,10)]