我想将一个整数字符串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
让我知道如何解决这个问题。
答案 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