-1

我想知道如何创建一个 10 位数字的数组,这样每次显示一个数字的数字时,它会增加 10 位数组中的匹配位置,如下所示:

digits=[0,0,0,0,0,0,0,0,0,0]
num_digits=[1,2,3,9,1]

和数字变成:

digits=[0,2,1,1,0,0,0,0,0,1]

我试过:

digits[num_digits[j]]=digits[num_digits[j]]+1

(j 在 num_digits 元素上倒退)但我收到错误“列表索引必须是整数,而不是列表”。

提前致谢!

4

4 回答 4

6
>>> digits=[0,0,0,0,0,0,0,0,0,0]
>>> num_digits=[1,2,3,9,1]
>>> for d in num_digits:
...     digits[d] += 1
... 
>>> digits
[0, 2, 1, 1, 0, 0, 0, 0, 0, 1]

对于列表的简单迭代,我们不需要变量j

于 2011-12-13T13:23:17.373 回答
3

可能值得使用 adict而不是 alist来存储您的总数。然后,您可以使用defaultdictfromcollections创建一个,它将自动为新键dict创建一个零条目:int

>>> from collections import defaultdict
>>> digits = defaultdict(int)
>>> num_digits = [1,2,3,9,1]
>>> for d in num_digits:
...     digits[d] += 1
... 
>>> digits
defaultdict(<type 'int'>, {1: 2, 2: 1, 3: 1, 9: 1})
>>> digits[1]
2
>>> digits[8]
0
于 2011-12-13T13:28:03.643 回答
1

您可以collections.Counter按如下方式用于该任务:

from collections import Counter

num_digits=[1,2,3,9,1]
digits = [0]*10
for key, value in Counter(num_digits).items():
    digits[key] = value
于 2011-12-13T13:24:22.893 回答
-1

在这里您可以找到如何在 python 中实现计数排序:http ://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Counting_sort#Python

于 2011-12-13T13:25:10.803 回答