hikaru’s diary

Django Engineer

【Python】要素の比較をする

修正に時間かかったので記事に残します。

ソースコード
array = [0, 1, 1, 2, 3, 3, 3, 4, 5]
for i in range(len(array)):
    if array[i] == array[i + 1]:  # 追加
        print(array[i], end='')  # 追加
    else:
        print(array[i])
実行結果

if array[i] == array[i + 1]:
IndexError: list index out of range
0
11
2
333
4

Process finished with exit code 1

i + 1で範囲外を比較しようとしたためエラー

対処法

if分を使い最後だけ違う処理をする

array = [0, 1, 1, 2, 3, 3, 3, 4, 5]
for i in range(len(array)):
    if len(array) == i + 1:
        print(array[i])
    else:
        if array[i] == array[i + 1]:
            print(array[i], end='')
        else:
            print(array[i])
実行結果

0
11
2
333
4
5

Process finished with exit code 0

余談

SQLのように「!=」は速度落ちるんじゃないかって思って「==」で書いたんですけどこの場合だと逆効果だったっぽいです。
他に良い書き方などあれば教えてください。

start = time.time()
for p in range(1000000):

~~~
省略
~~~

elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

# ==の時 elapsed_time:2.055753231048584[sec]
# !=の時 elapsed_time:1.6894924640655518[sec]