如何以增量计算字符串?

2024-06-01 20:41:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数字数组,我把它改成了字符串

a="1423"
astr=str(a)
aspl=list(astr)

我应该有['1','4','2','3']。 我想数一数数组中有多少个1~9 1=1次,2=1次。。。5=0次,6=0次。。。你知道吗

我的解决办法是

r=0
for r > 11:
    b = aspl.count(r)

但由于它是一个字符串,因此此方法不起作用。 我试过用

    b = aspl.count('r')

你可能已经猜到了,它只是在寻找r。 那你怎么办?你知道吗

提前谢谢。你知道吗


Tags: 方法字符串forcount数字数组listastr
3条回答

python^{}模块提供了一个^{}用于:

from collections import Counter

a = '032143487214093120'

count = Counter(a)
print(count)
# Counter({'2': 3, '4': 3, '1': 3, '0': 3, '3': 3, '9': 1, '7': 1, '8': 1})

然后打印

for digit in (str(i) for i in range(10)):
    print('{}: {}x'.format(digit, count[digit]))

# 0: 3x
# 1: 3x
# ...
# 5: 0x
# ...

如果您坚持字符串中未出现的数字也出现在计数器中,您可以初始化计数器,将所有数字设置为零:

count = Counter({str(i): 0 for i in range(10)})
print(count)  # Counter({'2': 0, '4': 0, '9': 0, '0': 0, '8': 0, '3': 0,
              #          '1': 0, '7': 0, '5': 0, '6': 0})
count.update(a)
print(count)  # Counter({'2': 3, '4': 3, '0': 3, '3': 3, '1': 3, '9': 1, 
              #          '8': 1, '7': 1, '5': 0, '6': 0})
for i in range(10):
    print s.count(str(i))

我想。。。你知道吗

下面是另一个可能的解决方案,它将结果生成为一系列元组:

s = '1423'
numbers = list(range(1, 10))
print(list((i, s.count(str(i))) for i in numbers))

输出

[(1, 1), (2, 1), (3, 1), (4, 1), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0)]

相关问题 更多 >