Python 3.x 简化计数和添加到列表中
好吧,一定有更干净的方法。我仍然是一个业余程序员,但我觉得他们有一些东西可以缩短这个时间。所以基本上我有这个数字数据集,我计算1,2,3,4,5,6,7,8,9的出现次数作为第一个数字,然后把这个数字加到一个列表中。这看起来很长,我必须这样做Python 3.x 简化计数和添加到列表中,python-3.x,Python 3.x,好吧,一定有更干净的方法。我仍然是一个业余程序员,但我觉得他们有一些东西可以缩短这个时间。所以基本上我有这个数字数据集,我计算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
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)
你可以用两行代码来完成这项工作:collections.Counter(基本上是一种专门为计数而设计的dict)和list comprehension(一种更简洁的语法,用于编写简单循环) 我会这样做的
import collections
counts = collections.Counter(str(x)[0] for x in pop_num)
countList = [counts[str(i)] for i in range(1,10)]
编辑:下面介绍如何在不使用集合的情况下获得等效功能
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)]
嗯,我明白了,有没有一种方法可以在不导入任何其他函数的情况下执行此操作?@Suliman您有什么理由需要避免使用collections模块吗?你可以自己重新实现,但这只会导致更多的样板代码。我没有理由感到好奇,因为在此之前我不知道collections函数。因此,如果出现更多类似这样的问题,我不知道是否存在用于这类事情的模块,我可以想出一些小技巧来缩短它,如果这有任何意义的话,我发布了一个例子,说明了如何在没有任何模块的情况下做同样的事情,但实际上这只是重新发明轮子,因为你通常会使用集合来做这类事情。另外,collections
和itertools
是您应该熟悉的两个常用实用程序模块。将来您可能需要再次使用它们。@SulimanSharif“想出一些小技巧来缩短它”——使用内置库。这是一条最短的路,涉及的技巧最少;这是学习语言的最好方法。