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

时间:2016-08-28 20:44:27

标签: string python-3.x counting

我想将一个整数字符串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 1 1 1 2 0 3 0 4 0 5 1 6 0 7 2 2 8 0 9 0

让我知道如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

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

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

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

然后你可以用这样的方式把它作为数字列表:

Counter

好的,现在使用collections模块中的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

现在{{1}}是一个类似字典的结构,包含
数字作为键,出现次数为值。

答案 1 :(得分: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']会返回2,因为7'77150'中出现两次。我们使用.get ctr方法,以便我们可以将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