如何将字符串值转换为单独数字列表

How to convert a string value into a list of seperate digits

我想将一串整数(比如 77150)转换成一个列表,这样我就可以计算 input.Here 中某个特定数字的出现次数,我的代码也是如此:

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 1 1 1 2 0 3 0 4 0 5 1 6 0 7 2 8 0 9 0

告诉我如何解决这个问题。

我不明白输入的输出结果如何,
但如果你想计算位数,那么这里
是怎么做到的。设 x 为表示数字的字符串:

In [67]: x = '77150'

然后你可以这样把它变成一个数字列表:

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

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

好的,现在使用 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 是一个类似字典的结构,其中包含
数字作为键,出现次数作为值。

>>> 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'] 会 return 2 因为 7'77150' 中出现了两次。我们使用ctr.get方法,这样我们就可以将0的值赋给字符串中任何一个从未出现过的字符。

对于更用户友好的输出形式:

>>> 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