【发布时间】:2012-10-25 04:19:49
【问题描述】:
假设我有清单:
list = [a,a,b,b,b]
我正在遍历列表。当前一个字母与当前字母相同时,变量“count”加 1。以下只是部分代码:
for item in list:
if item == previous:
count +=1
return count
上面的例子返回 3,1 代表重复 a,2 代表 bs。我可以用什么让它计数只增加一次,总共 2?我尝试使用一个变量“found”,它根据之前是否见过字母返回 True 或 False,但这当然不适用于 [a,a,a,c,a,a,a] 之类的东西,如我所愿,它为“a”的第一次运行返回 1 而不是 2。
编辑:我可能比它需要的更难。我想要的只是在任何时候连续重复一个字符串以使计数增加一。 [a,b,b,c,a,a,a,a,c,c,c,] 应该返回 3。 [a,a,a,a,a,a,a,a] 应该返回 1。
【问题讨论】:
-
=在 python 中从来不是一个相等运算符;它始终是一个绑定(又名赋值)运算符。如果代码是item == previous,结果会有所不同 .. 此外,您需要将某些内容绑定到previous以使其有意义。 -
不要用变量覆盖列表内置名称
-
你能澄清一下这个问题吗?如果您想计算与前一个字符相同的字符数,那么您确实需要“aabbb”的答案 3。但后来你说你想要“aaacaaa”的答案 2,我认为应该是 4。你到底想要什么?