【Python】配列 listとarrayの違いを知る

スポンサーリンク

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」の違いでした。

コメント

  1. えぐち より:

    listとarrayの違いですが要素の参照に必要な時間が違います。

    listの要素を参照するには線形時間O(n)が必要です。
    これに対しarrayの要素を参照するには定数時間O(1)で済みます。

    例えばlistを対象にした探査プログラムで、線形探査のほうが二分探査より速いという期待とは違う結果になる原因になります。