Pythonでリストとか逆順にしたいけど、reverseとreversedがいま一歩わからないあなたへ。
『reverseとreversedの区別・違いは?』
『リストをreverseでどのように使うの?』
こんな疑問に答えます。
【python】reverseとreversedの区別・違い
reverseはリスト型のメソッドです。
reversedはPythonの標準組込関数です(インポート不要)
まず、ここが大きな違いです。
reverseはリスト型のメソッドなので、リストオブジェクト.reverse()と記述します。
reversedは関数なので、reverse(オブジェクト)と記述します。
reverseメソッド・reversed関数を使ってリスト等のシーケンスを逆順にできます。
違いは次の通りです。
- reverse:元のリストを逆順にする
- reversed:元のリストを逆順にしたオブジェクトを作成する
元のリストを直接変更したいケースはreverse
元のリストを直接変更したく無いケースはreversed
と使い分けましょう。
- 第1引数
シーケンスオブジェクト…リスト・タプル・range等
または テキストシーケンスオブジェクト…文字列 - 戻り値
引数のシーケンスオブジェクトの逆順 - 戻り値の型
イテレータオブジェクト
- 第1引数
シーケンスオブジェクト…リスト・タプル・range等
または テキストシーケンスオブジェクト…文字列 - 戻り値
なし - 戻り値の型
なし
reverse関数は
基本は元リストを変更しないreversedをおすすめします。
理由は、元のリストを破壊することがないためです。
後で元リストも参照したいケースも有るかと思います。
特に参照する必要がなければ、reverseで良いでしょう。
reversedは過去形なので…
逆順にした別のオブジェクト
というイメージを持つと覚えやすいカモね!
reversed関数でシーケンスオブジェクトを逆順にする
reversed関数でリストを逆順にしてみよう♪
x = [3, 5, 2, 1, 6 ]
x = reversed(x)
print(x)
print(list(x))
<list_reverseiterator object at 0x7fdc4c4912d0>
[6, 1, 2, 5, 3]
例はリストをあげましたが、タプル・文字列・rangeでも使い方は全て同じです。
(シーケンスオブジェクトなら同じ)
sorted・sort関数でreverseオプションを使用する方法もあります。
リストや文字列もスライスという方法でも逆順にできます。
range関数で後ろから逆順の連番を作成することもできます。
色々お試しあれ
【Python】reverseとスライスの計算量の違い
リスト・タプル・文字列・rangeのシーケンスオブジェクトを逆順にする方法はいくつかあります。
- reversed関数を使う
- スライスで-1を指定する
reversed関数はイテレータオブジェクトを返すだけなので、処理時間が短く、メモリ消費量も少ないです。
特に膨大な量を計算しなければ、スライスでもOK。
スライスで逆順にする指定方法は
シーケンス[::-1]
です。
もっと詳しくはこちら
参考…【Python】スライスとは?リストや文字列を後ろから!飛ばしもOK♪
イテレータはこちら
参考…【Python】for文とwhileはイテレータで要素を取り出し!
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
- 応用情報技術者
- Oracle Master Gold
- Java SE Gold
- Java EE Webコンポーネントディベロッパ
- Python エンジニア認定データ分析
- 簿記2級