Pythonの「list」と「array」について。
この記事の内容はコチラです
- Pythonの「list」と「array」の違い
- 配列の使い方
今回は、Pythonの配列 listとarrayの違いについて解説します。
Pythonの配列 listとarrayの違い
Pythonの配列は「list」と「array」の2種類あります。この2種類の配列listとarrayは何が違うのでしょうか?
listとarrayのコード
# list lst = [1, 10, 100] for i in lst: print(i) #[結果] 1 #[結果] 10 #[結果] 100
Pythonの配列でもっともよく使用されるのが「list」(リスト)です。
参考ページ:https://docs.python.org/ja/3/library/stdtypes.html#sequence-types-list-tuple-range
# array import array ary = array.array('i',[1, 10, 100]) for i in ary: print(i) #[結果] 1 #[結果] 10 #[結果] 100
Pythonの配列は「array」もあります。
参考ページ:https://docs.python.org/ja/3/library/array.html
こうして比較してみると「list」と「array」はほとんど同じに見えますが、細かいところでやはり違いがありますね。
listは異なる型が混在できる
まず大きな違いとして、「list」は異なる型が混在できます。
# list lst = [1, 'python', 100] for i in lst: print(i) #[結果] 1 #[結果] 'python' #[結果] 100
上の例では、数値型と文字列型を混在してlistの中にふくめています。listはこのように型は問いません。異なる型を混在して配列にできるのがlistです。
# array import array ary = array.array('i',[1, 'python', 100]) #[結果] TypeError: an integer is required (got type str)
一方、「array」は同じ型のみで異なる型は混在できません。「array」の第一引数は「型」です。ここに複数の型を指定することはできません。
上の例では「i」、つまりint型で指定したにもかかわらず、str型をセットしているのでエラーとなりました。
そもそも「array」は数値型を基本としています。「list」は文字列でも数値でもなんでもOKです。
listはimportが不要
# array import array ary = array.array('i',[1, 10, 100])
また「list」はimportせずに使えますが、「array」は「import array」としてインポートしないと使えません。
まとめ
- listは異なる型が混在できる
- listはimportが不要
「list」と「array」の大きな違いとしてはこの2点です。
使い勝手がいいのはもちろんlist(リスト)です。なので多くの場合、Pythonの配列としては、list(リスト)が使われています。
以上、Pythonの配列、「list」と「array」の違いでした。
コメント
listとarrayの違いですが要素の参照に必要な時間が違います。
listの要素を参照するには線形時間O(n)が必要です。
これに対しarrayの要素を参照するには定数時間O(1)で済みます。
例えばlistを対象にした探査プログラムで、線形探査のほうが二分探査より速いという期待とは違う結果になる原因になります。