用語比較
rangeとlistの違い|リストに見えて実はリストではない(Python3基礎)
rangeとlistは、for文や要素の取り出しでは同じように使えるので、同じものだと思いやすい組です。print(range(10)) が [0, 1, ..., 9] ではなく range(0, 10) と表示されて、戸惑う人もいます。
rangeは数列を生む等差数列のオブジェクトで、リストではない。中身を並べて見たいときや、要素を変えたいときは、list() でリストにすると覚えると、選択肢を切り分けられます。
このページは、Python公式チュートリアル4.3「range() 関数」の記述と、Python 3.9.6での実行結果をもとに比べます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
range
等差数列を生成するオブジェクト。いろいろな点でリストのように振る舞うが、本当はリストではない。イテレートすると、数列の連続した要素を返す。
list
要素を実際に持つリスト。append()や要素の代入で中身を変えられる。
見分け方
表示が range(0, 10) の形ならrange、[0, 1, 2] の形ならlist。中身を並べて確かめるときは list(range(...)) にする。
違いを表で確認
| 比較軸 | range | list |
|---|---|---|
| print の表示 | range:print(range(10)) は range(0, 10) と表示される | list:print(list(range(10))) は [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] と表示される |
| 型 | range:isinstance(range(10), list) はFalse。型の名前は range | list:型の名前は list |
| 要素の変更 | range:append() などがない(AttributeError)。作ったあとに中身を変える操作は使えない | list:append() や要素の代入で変更できる |
| 要素の持ち方 | range:実際にリストを作らないので、公式チュートリアルは、スペースの節約になると述べる | list:要素をすべて実際に持つ |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
print(range(5)) の表示が [0, 1, 2, 3, 4] にならず戸惑う人
rangeはリストではないので、range(0, 5) と表示されます。中身を見たいときは list(range(5)) にします。
数列に append() や要素の代入をしたい人
rangeにはappend()がありません。list() でリストにしてから変更します。
for文で決まった回数だけ繰り返したい人
rangeのままで足ります。リストにする必要はありません。
具体例で使い分ける
例 1
print でそのまま表示する場合
print(range(10)) と print(list(range(10))) の表示を比べます。
- 公式チュートリアルは、rangeを直接出力すると変なことになると述べ、range(10) の表示は range(0, 10) だと示します。
- list(range(10)) にすると、[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] と表示されます。
結論: 並べて見たいときは list() で包みます。
例 2
開始・終端・ステップを指定する場合
list(range(5, 10))、list(range(0, 10, 3))、list(range(-10, -100, -30)) の結果を調べます。
- 公式チュートリアルの例どおり、順に [5, 6, 7, 8, 9]、[0, 3, 6, 9]、[-10, -40, -70] です。
- 終端値は、生成される数列には入りません。range(10) は10個の値を生成します。
結論: ステップは負の数にもできます。終端は含まれません。
例 3
listと比べたり、変更したりする場合
range(3) == [0, 1, 2] の結果と、range(3).append(3) の結果を調べます。
- Python 3.9.6で range(3) == [0, 1, 2] はFalseです。list(range(3)) == [0, 1, 2] はTrueです。
- range(3).append(3) は、AttributeError: 'range' object has no attribute 'append' になります。
- rangeの添字や、スライスは使えます。range(10)[3] は3、range(10)[2:5] は range(2, 5) です。
結論: rangeはリストと等しくなく、中身を変える操作も使えません。
問題文から答えを選ぶ手順
- 1
表示の形を見る
range(0, 10) の形ならrange、角括弧の形ならlistです。
- 2
変更するかを見る
append() や要素の代入が要るなら、list() でリストにします。
- 3
目的を見る
for文の繰り返しや sum() の引数なら、rangeのままで足ります。
試験での見分け方
- 1rangeはリストのように振る舞うが、リストではない。
- 2rangeは、要素が尽きるまで順に取得できるイテラブルである。for文や sum() の引数に使える。
- 3終端値は数列に入らない。range(10) は10個の値を生成する。
- 4中身を並べたり変更したりするときは、list() でリストにする。
誤答しやすい選択肢
range(5) が [0, 1, 2, 3, 4] というリストだと考える
修正: range(5) はrangeオブジェクトです。リストにするには list(range(5)) と書きます。
range(1, 10) に10が含まれると考える
修正: 終端値は含まれません。range(1, 10) は1から9までです。
range(3) == [0, 1, 2] がTrueになると考える
修正: 型が違うのでFalseです。比べるなら list(range(3)) == [0, 1, 2] にします。
確認問題
Q1print(range(10)) は何と表示されますか?
答え: range(0, 10)
公式チュートリアルは、rangeを直接出力するとこの形になると示します。
Q2list(range(0, 10, 3)) の結果は?
答え: [0, 3, 6, 9]
0から3ずつ増え、終端の10は含まれません。
Q3range(3) に append(3) を呼ぶとどうなりますか?
答え: AttributeError になる
rangeはリストではなく、append() を持ちません。
到達チェック
- rangeはリストではなくイテラブルだと言える
- range(10) の表示が range(0, 10) だと言える
- 終端値が数列に入らないと言える
関連ページで確認する
同じ資格で次に知りたいこと
- setとfrozensetの違い|あとから変更できるか、辞書のキーにできるか(Python3基礎)
setとfrozensetの違いを、Python公式ドキュメントの記述(setは変更可能でハッシュ値を持たない、frozensetは変更不可でハッシュ可能)とPython 3.9.6の実行結果で整理。辞書のキーにできるか、addが使えるかを切り分ける判断手順と確認問題つき。
- try文のelse節とfinally節の違い|実行される条件と例外の扱い(Python3基礎)
try文のelse節とfinally節の違いを、Python公式チュートリアル8章の記述とPython 3.9.6の実行結果で整理。例外なしなら else→finally、例外ありなら except→finally になる流れと、else節の例外はexceptで捕捉されない点を、判断手順と確認問題つきで確認します。
- staticmethodとclassmethodの違い|第一引数にクラスを受け取るか(Python3基礎)
staticmethodとclassmethodの違いを、Python公式ドキュメントの記述(暗黙の第一引数の有無、継承時に渡されるクラス)と実行結果で整理。Python3エンジニア認定基礎試験のクラスの選択肢を切り分ける判断手順と確認問題つき。
よくある質問
Qrangeとlistの違いは?
rangeは等差数列を生成するオブジェクトで、リストのように振る舞いますが、本当はリストではありません。listは要素を実際に持ち、append() などで変更できます。
Qprint(range(10)) で数字が並ばないのはなぜですか?
rangeはリストではないので、range(0, 10) の形で表示されます。数字を並べて見るには list(range(10)) にします。
Qrange(1, 10) に10は含まれますか?
含まれません。公式チュートリアルは、指定した終端値は生成される数列には入らないと述べます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
