Python

【Python】reverseとreversedの区別!リスト等

  • このエントリーをはてなブックマークに追加
  • LINEで送る

Pythonでリストとか逆順にしたいけど、reverseとreversedがいま一歩わからないあなたへ。

『reverseとreversedの区別・違いは?』

『リストをreverseでどのように使うの?』

こんな疑問に答えます。

SE歴25年のオッサンが解説するぞい!
SEおっさん
SEおっさん



スポンサーリンク

【python】reverseとreversedの区別・違い

reverseはリスト型のメソッドです。

reversedはPythonの標準組込関数です(インポート不要)

まず、ここが大きな違いです。

reverseはリスト型のメソッドなので、リストオブジェクト.reverse()と記述します。
reversedは関数なので、reverse(オブジェクト)と記述します。

reverseメソッド・reversed関数を使ってリスト等のシーケンスを逆順にできます。
違いは次の通りです。

reversedとreverseの違い
  • reverse:元のリストを逆順にする
  • reversed:元のリストを逆順にしたオブジェクトを作成する

元のリストを直接変更したいケースはreverse
元のリストを直接変更したく無いケースはreversed
と使い分けましょう。

reversedの書式
  • 第1引数
    シーケンスオブジェクト…リスト・タプル・range等
    または テキストシーケンスオブジェクト…文字列  
  • 戻り値
    引数のシーケンスオブジェクトの逆順
  • 戻り値の型
    イテレータオブジェクト
reverseの書式
  • 第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オプションを使用する方法もあります。


リストや文字列もスライスという方法でも逆順にできます。

【Python】スライスとは?リストや文字列を後ろから!飛ばしもOK♪
【Python】スライスとは?リストや文字列を後ろから!飛ばしもOK♪
Pythonでリストや文字列を操作できるスライスがあります。 スライスを使うとリストを後ろから逆順に取得したり、1つ飛ばしするのも自由自在。 だけど… 『そもそ.....


range関数で後ろから逆順の連番を作成することもできます。
色々お試しあれ

【Python】range関数で1から連番・飛ばしの間隔・逆順など
【Python】range関数で1から連番・飛ばしの間隔・逆順など
Pythonのrange関数でチョットした応用をしたいあなたへ。 『1から連番にするには?』 『間隔を飛ばしで連番にするには?』 『逆順にどうやってするの?』 .....

【Python】reverseとスライスの計算量の違い

リスト・タプル・文字列・rangeのシーケンスオブジェクトを逆順にする方法はいくつかあります。

  1. reversed関数を使う
  2. スライスで-1を指定する

reversed関数はイテレータオブジェクトを返すだけなので、処理時間が短く、メモリ消費量も少ないです。

特に膨大な量を計算しなければ、スライスでもOK。

スライスで逆順にする指定方法は
シーケンス[::-1]
です。

もっと詳しくはこちら
参考…【Python】スライスとは?リストや文字列を後ろから!飛ばしもOK♪

イテレータはこちら
参考…【Python】for文とwhileはイテレータで要素を取り出し!

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪

LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!

取得資格
  • 応用情報技術者
  • Oracle Master Gold
  • Java SE Gold
  • Java EE Webコンポーネントディベロッパ
  • Python エンジニア認定データ分析
  • 簿記2級


スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*