イテレータにするという方法もあります。
iter 関数を使用して、イテレータにすると next 関数で要素を順に取得することができます。
next 関数は、もう要素がない場合に StopIteration 例外を投げます。
また、ご質問の内容からは分かりませんでしたが、
ループカウンタが必要な場合は、enumerate 関数を使用します。
Python
1# データ
2data = [1, 1, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5]
3
4# イテレータ
5data_itr = enumerate(iter(data))
6# 直前の値
7prev = None
8
9while True:
10 try:
11 # イテレータから次の要素を取得する
12 index, value = next(data_itr)
13 except StopIteration:
14 # もう要素がない場合は while を抜ける
15 break
16
17 if prev == value:
18 # 前の値と同じ
19 print('index: {}, value: {} > 処理1'.format(index, value))
20 else:
21 # 前の値と異なる
22 print('index: {}, value: {} > 処理2'.format(index, value))
23
24 prev = value
25
26# index: 0, value: 1 > 処理2
27# index: 1, value: 1 > 処理1
28# index: 2, value: 2 > 処理2
29# index: 3, value: 3 > 処理2
30# index: 4, value: 3 > 処理1
31# index: 5, value: 3 > 処理1
32# index: 6, value: 3 > 処理1
33# index: 7, value: 4 > 処理2
34# index: 8, value: 4 > 処理1
35# index: 9, value: 5 > 処理2
36# index: 10, value: 5 > 処理1
37# index: 11, value: 5 > 処理1
38# index: 12, value: 5 > 処理1
以降、蛇足ですが、
キーブレイクをやりたいのであれば、itertools.groupby でできます。
Python
1import itertools
2for key, values in itertools.groupby(data):
3 print('key: {}, values: {}'.format(key, list(values)))
4
5# key: 1, values: [1, 1]
6# key: 2, values: [2]
7# key: 3, values: [3, 3, 3, 3]
8# key: 4, values: [4, 4]
9# key: 5, values: [5, 5, 5, 5]
同じ値の数をカウントしたいのであれば、collections.Counter でできます。
これは、Key が要素、Value がその要素の数となる辞書になります。
Python
1import collections
2data_count = collections.Counter(data)
3print(data_count)
4
5# Counter({3: 4, 5: 4, 1: 2, 4: 2, 2: 1})