2016-08-28 19 views
-1

整数の文字列を77150と言うリストに変換して、その入力の特定の数字の出現を数えることができるリストに変換したいと思います。同:文字列の値を別の数字のリストに変換する方法

result=1 
new=0 
value=input() 

number=[] 

number=[int(i) for i in value.split()] 

no0=0 
no1=0 
no2=0 
no3=0 
no4=0 
no5=0 
no6=0 
no7=0 
no8=0 
no9=0 

for value in range(0,len(number)): 
    if number[value]==0: 
     no0=no0+1 
    elif number[value]==1: 
     no1=no1+1 
    elif number[value]==2: 
     no2=no2+1 
    elif number[value]==3: 
     n03=no3+1 
    elif number[value]==4: 
     no4=no4+1 
    elif number[value]==5: 
     no5=no5+1 
    elif number[value]==6: 
     no6=no6+1 
    elif number[value]==7: 
     no7=no7+1 
    elif number[value]==8: 
     no8=no8+1 
    elif number[value]==9: 
     no9=no9+1 
    else: 
     break 
numlist=[] 
numlist.append(no0) 
numlist.append(no1) 
numlist.append(no2) 
numlist.append(no3) 
numlist.append(no4) 
numlist.append(no5) 
numlist.append(no6) 
numlist.append(no7) 
numlist.append(no8) 
numlist.append(no9) 

for n in range(0,10): 
    print(str(n) +" " +str(numlist[n])) 

だから入力は、77150のような整数の列であり、出力は次のとおり

この問題を解決する方法を教えてください。

+0

使用[ 'collections.Counter()'](https://docs.python.org/3/library/collections.html#:出力をよりユーザーフレンドリー形態について

コレクション。カウンター)。 – Kasramvd

答えて

1

は、私は理解していないか、入力から出力結果、
いますが、桁数をカウントしたいならば、ここで
はそれを行う方法です。 xが番号を表す文字列になりましょう:

In [67]: x = '77150' 

その後、あなたはそれの数字のリストこの方法を行うことができます。

In [69]: digits = [*map(int, list(x))] 

In [70]: digits 
Out[70]: [7, 7, 1, 5, 0] 

[OK]を、今collectionsモジュールからCounterを使用します。

In [72]: import collections 

In [73]: c = collections.Counter(digits) 

In [74]: c 
Out[74]: Counter({0: 1, 1: 1, 5: 1, 7: 2}) 

そして今度はcは、
の数字を含む辞書のような構成ですキーとして、出現回数を値として表示します。

+0

*マップが何をしているのか、コードのその部分がオンラインコンパイラのpython 3.2で動作しないのか説明できますか? –

+0

2.7のマップに戻ると、リストが返されます。 Python 3では、ジェネレータのようなオブジェクトを返します。これをリストに変換するには、結果をリストfunction-list(map(...))に渡します。 Python 3.5では、アンパックリストの構文を拡張しました。[* map(...)]は、リスト関数の機能を行います。 –

1
>>> from collections import Counter 
>>> ctr = Counter('77150') 
>>> [(i, ctr.get(str(i), 0)) for i in range(10)] 
[(0, 1), (1, 1), (2, 0), (3, 0), (4, 0), (5, 1), (6, 0), (7, 2), (8, 0), (9, 0)] 

示す上記最後の行は、例えば、1は、一度発生したことが、2文字列にゼロ回発生。

ctrオブジェクトは、文字列内で各文字が何回発生したかを把握しています。従って、ctr['7']は、7'77150'に2回発生するため、2を返します。我々は0の値を、文字列には決して出現しなかった文字に割り当てることができるように、の.getメソッドを使用します。

>>> print('\n'.join('%s: %s' % (i, ctr.get(str(i), 0)) for i in range(10))) 
0: 1 
1: 1 
2: 0 
3: 0 
4: 0 
5: 1 
6: 0 
7: 2 
8: 0 
9: 0 
関連する問題