如何将字符串值转换为单独数字列表
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
我想将一串整数(比如 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