用語比較
reverse()と reversed() の違い|None が返る理由と逆順の取り方(Python3基礎)
リストを逆順にする方法には、リストのメソッドの reverse()、組み込み関数の reversed()、スライスの [::-1] があります。
reverse() は元のリストを書き換えて None を返します。reversed() は元のリストを変えず、逆順に取り出すイテレータを返します。
このページは、reverse() の戻り値を使って None が出た人や、reversed() の結果が <list_reverseiterator ...> と表示されて戸惑った人向けです。決まりは、Python 公式ドキュメントの組み込み関数と組み込み型の項に書かれています。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
a.reverse()
リスト a を逆順に並べ替える(その場で変更)。戻り値は None。
reversed(a)
a を変えず、逆順のイテレータを返す。リストにするなら list() で包む。
a[::-1]
a を変えず、逆順の新しいリストを返す。
違いを表で確認
| 比較軸 | a.reverse() | reversed(a) |
|---|---|---|
| 元のリスト(a = [1, 2, 3]) | a.reverse():[3, 2, 1] に変わる | reversed(a):[1, 2, 3] のまま |
| 戻り値 | None | <list_reverseiterator object ...> |
| リストとして受け取る方法 | a 自身が逆順になる | list(reversed(a)):[3, 2, 1] |
| 文字列に使えるか | str には reverse() が無く AttributeError | list(reversed("abc")) は ['c', 'b', 'a'] |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
reverse() の戻り値を変数に入れて None になった人
r = a.reverse() とすると、r は None です。逆順になるのは a 自身です。Python 3.9.6 では、a = [1, 2, 3] のあと r が None、a が [3, 2, 1] になりました。公式ドキュメントは、その場で変更するメソッドは副作用で動くことを示すために None を返すと説明しています。
reversed() を print して変な表示が出た人
reversed() が返すのはリストではなく、逆順のイテレータです。print すると <list_reverseiterator object at 0x...> のように表示されます。中身を見るには list() で包みます。
元のリストを残したまま、逆順のリストが欲しい人
list(reversed(a)) か a[::-1] を使います。どちらも元の a は [1, 2, 3] のままです。文字列の逆順も、s[::-1] なら 'cba' が得られます。
具体例で使い分ける
例 1
reverse() と reversed() の動き
a = [1, 2, 3] に a.reverse() を、b = [1, 2, 3] に reversed(b) を実行します。
- 公式ドキュメントは、reverse() をシーケンスの要素をその場で逆順にするメソッドと説明しています。
- reversed() は、逆順のイテレータを返す組み込み関数です。引数のシーケンスは変わりません。
結論: a.reverse() の戻り値は None で、a は [3, 2, 1] になります。reversed(b) はイテレータを返し、b は [1, 2, 3] のままです。list() で包むと [3, 2, 1] です。Python 3.9.6 で同じ結果を確認しました。
例 2
イテレータは1回しか読めない
c = [1, 2, 3] に it = reversed(c) を実行し、next(it) を 4 回呼びます。
- reversed() が返すイテレータは、next() を呼ぶたびに末尾から 1 つずつ要素を返します。
- 要素を使い切ったあとに next() を呼ぶと、StopIteration が起きます。
結論: 3 回目までは 3、2、1 が順に返り、4 回目は StopIteration です。Python 3.9.6 で同じ結果を確認しました。
問題文から答えを選ぶ手順
- 1
元のリストを書き換えてよいかを決める
書き換えてよいなら reverse() です。残したいなら reversed() か [::-1] です。
- 2
逆順のリストが要るか、順に取り出すだけかを決める
for 文で順に取り出すだけなら reversed() で足ります。リストとして使うなら list() で包むか [::-1] を使います。
- 3
対象がリストかどうかを確かめる
reverse() はリストのメソッドです。文字列やタプルには無いので、reversed() か [::-1] を使います。
試験での見分け方
- 1a.reverse() は a をその場で逆順にし、None を返す。
- 2reversed(a) は a を変えず、逆順のイテレータを返す。
- 3a[::-1] は a を変えず、逆順の新しいリストを返す。
- 4文字列には reverse() が無い。
誤答しやすい選択肢
reverse() の戻り値が逆順のリストだと思う
修正: 戻り値は None です。逆順になるのは呼び出したリスト自身です。
reversed() がリストを返すと思う
修正: 返るのはイテレータです。リストにするには list(reversed(a)) とします。
文字列に reverse() を使おうとする
修正: str に reverse() は無く、AttributeError になります。s[::-1] か、"".join(reversed(s)) を使います。
確認問題
Q1a = [1, 2, 3] のとき、r = a.reverse() のあと、r は何ですか?
答え: None
reverse() は a をその場で逆順にし、戻り値は None です。a は [3, 2, 1] になります。
Q2b = [1, 2, 3] のとき、list(reversed(b)) は何で、b は何のままですか?
答え: [3, 2, 1]、b は [1, 2, 3] のまま
reversed() は元のリストを変えません。
Q3"abc".reverse() を実行するとどうなりますか?
答え: AttributeError
str には reverse() というメソッドがありません。
到達チェック
- reverse() が None を返し、元を書き換えると言える
- reversed() が逆順のイテレータを返すと言える
- 元を残して逆順のリストを得る方法を 2 つ言える
- 文字列に reverse() が無いと言える
関連ページで確認する
同じ資格で次に知りたいこと
- capitalize()と title() の違い|they're が They'Re になる理由(Python3基礎)
capitalize() は文字列の先頭の1文字だけを大文字にし、残りを小文字にします。title() は単語ごとに先頭を大文字にしますが、アポストロフィの後ろも大文字にします。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- str.find()と index() の違い|見つからないとき -1 か ValueError か(Python3基礎)
文字列の find() は見つからないと -1 を返し、index() は ValueError を起こします。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、-1 を条件式に使う落とし穴、確認問題つきで整理します。
- isdecimal・isdigit・isnumeric の違い|'²' や '½' で結果が分かれる(Python3基礎)
isdecimal() は十進の数字だけ、isdigit() は上付きの '²' も含み、isnumeric() は '½' のような分数も含みます。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
よくある質問
Qreverse() と sort(reverse=True) は同じですか?
違います。reverse() は今の並びを逆にするだけで、sort(reverse=True) は大きい順に並べ替えます。
Qreversed() はどんな対象に使えますか?
公式ドキュメントは、__reversed__() メソッドを持つか、シーケンスの規約を満たす対象と説明しています。リスト、タプル、文字列で使えます。
Qどれが一番速いですか?
このページでは速度を比べていません。元を残すかどうかで選びます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
