0

好的,必须有一种更清洁的方法来做到这一点。我仍然是一名业余程序员,但我觉得他们有一些东西可以缩短这个时间。所以基本上我有这个数字数据集,我将 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)
4

1 回答 1

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)]
于 2013-08-14T04:55:18.760 回答