
Python2と3でrangeを使う時の違いと、TypeErrorの時
Python2
list = range(100)
random.shuffle(list)
こんな感じで書いていたPython2スクリプトですが、
Python3ではこんなエラーが出てしまいました。
TypeError: 'range' object does not support item assignment
調べてみるとPython3のrangeが返すのはリストでは無いんだとか・・・
仕様が変わったみたいです。
こういう時は
list = list(range(100))
こんな感じにlist()でキャスト(?)すればいいらしいのですが僕の環境ではうまくいきませんでした。
TypeError: 'range' object is not callable
というエラーが出てしまいました。
これは変数名と関数名は同じにしてはいけないに書いてあるように、関数名と変数名を同じにしていた事によるエラーでした。
Python3
_list = list(range(100))
random.shuffle(_list)
とりあえずこれで対応しました。