例如,如果给定的字符串是:
"aaabbbbccdaeeee"
我想说的是:
3 a, 4 b, 2 c, 1 d, 1 a, 4 e
在Python中使用bruteforce循环很容易,但是我想知道是否有一种更Python/更干净的单行程序类型的方法。你知道吗
我的蛮力:
while source!="":
leading = source[0]
c=0
while source!="" and source[0]==leading:
c+=1
source=source[1:]
print(c, leading)
Tags:
使用Counter表示字符串中每个不同字母的计数,而不考虑其位置:
如果字符串中的位置有意义,可以使用groupby:
印刷品:
可以简化为列表理解:
您甚至可以使用正则表达式:
有许多不同的方法来解决这个问题。@dawg已经发布了最佳解决方案,但是如果出于某种原因你不能使用
Counter()
(可能是工作面试或学校作业),那么你实际上可以用几种方法解决问题。你知道吗为了好玩,让我们看看每个方法是如何执行的。你知道吗
对于
s = "aaabbbbccdaeeee"
和10000次运行:(实际结果相当令人惊讶)
现在让我们测试一下,如果我们将字符串设置为《创世纪》的整个纯文本版本并运行1000次,会发生什么:
看起来创建
Counter()
对象的开销变得不那么重要了!你知道吗(这些不是很科学的测试,但很有趣)。你知道吗
相关问题 更多 >
编程相关推荐