-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

合計を保存するのdictではなく、を使用する価値があるかもしれません。list次に、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 に答える