【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]