logo

Python でリストを反転する

Python では、リストを反転するさまざまな方法が提供されます。リストを作成する方法に関する多くのテクニックのいくつかを見ていきます。 パイソン 逆にすることができます。

例:



  Input:   list = [4, 5, 6, 7, 8, 9]   Output:   [9, 8, 7, 6, 5, 4]   Explanation:   The list we are having in the output is reversed to the list we have in the input.>

Python でリストを反転する

この記事で取り上げるアプローチは次のとおりです。

  • の使用 スライス 技術
  • 現在の番号と最後の番号を一度に入れ替えてリストを反転する
  • reversed() と 逆行する() 組み込み関数
  • を使って 二点アプローチ
  • の使用 入れる() 関数
  • 使用する リストの内包表記
  • を使用してリストを反転する ナンピー

1. リバース スライス手法を使用したリスト

この手法では、リストのコピーが作成され、リストはその場で並べ替えられません。コピーを作成するには、既存の要素をすべて保持するためのより多くのスペースが必要です。これにより、さらに多くのメモリが消費されます。ここで使用しているのは、 スライス Python でリストを逆にするテクニック。

Python3




ラキ・サワント





# Reversing a list using slicing technique> def> Reverse(lst):> >new_lst>=> lst[::>->1>]> >return> new_lst> lst>=> [>10>,>11>,>12>,>13>,>14>,>15>]> print>(Reverse(lst))>

>

>

出力

[15, 14, 13, 12, 11, 10]>

時間計算量: の上)
補助スペース: の上)

2. 現在の番号と最後の番号を一度に入れ替えてリストを反転する

アプローチは次のとおりです。

arr[] の場合、配列の長さが 1 の場合は size を返し、arr を返します。 elif 配列の長さが 2 の場合、最初と最後の数値を入れ替えて arr を返します。それ以外の場合は、i=0 を初期化します。サイズ//2 で i をループし、最初と次の番号のインデックスが同じでない場合は、最初と最後の現在の番号を交換し、次の番号の次と最後の番号を交換して、i+=2 をインクリメントし、ループ後に arr を返します。

Python3




#Python program to reverse an array> def> list_reverse(arr,size):> >#if only one element present, then return the array> >if>(size>=>=>1>):> >return> arr> > >#if only two elements present, then swap both the numbers.> >elif>(size>=>=>2>):> >arr[>0>],arr[>1>],>=>arr[>1>],arr[>0>]> >return> arr> > >#if more than two elements presents, then swap first and last numbers.> >else>:> >i>=>0> >while>(i//2): #swap present and preceding numbers at time and jump to second element after swap arr[i],arr[size-i-1]=arr[size-i-1],arr[i] #skip if present and preceding numbers indexes are same if((i!=i+1 and size-i-1 != size-i-2) and (i!=size-i-2 and size-i-1!=i+1)): arr[i+1],arr[size-i-2]=arr[size-i-2],arr[i+1] i+=2 return arr arr=[1,2,3,4,5] size=5 print('Original list: ',arr) print('Reversed list: ',list_reverse(arr,size)) #This contributed by SR.Dhanush>

>

>

出力

Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>

時間計算量: O(log2(n))、ここで n 指定された配列の長さです。
補助スペース: ○(1)

3. Reversed() および Reverse() 組み込み関数を使用した逆リスト

使用する 反転() リストを逆にすると、 list_reverseiterator オブジェクトが作成され、そこから list() 型キャストを使用してリストを作成できます。または、リストを使用することもできます 逆行する() リストをその場で反転する関数。

Python3




lst>=> [>10>,>11>,>12>,>13>,>14>,>15>]> lst.reverse()> print>(>'Using reverse() '>, lst)> print>(>'Using reversed() '>,>list>(>reversed>(lst)))>

>

>

出力

Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>

時間計算量: O(n)。n はリスト lst の長さです。
補助スペース: O(1) 元のリストをその場で変更し、新しいリストを作成しないためです。

4. ツーポインタアプローチを使用してリストを反転する

このメソッドでは、2 つのポインター (基本的には開始インデックスと終了インデックス、'left' と 'right' とします) を宣言します。リストをスキャンしながら、各反復でインデックス「左」と「右」の要素を交換します。

「左」ポインタは前方に移動し、「右」ポインタは後方に移動します。 「最初」<「最後」までプロセスを続けます。これは、偶数の要素と奇数の要素の両方で機能します。

Python3




# Reversing a list using two-pointer approach> def> reverse_list(arr):> >left>=> 0> >right>=> len>(arr)>->1> >while> (left # Swap temp = arr[left] arr[left] = arr[right] arr[right] = temp left += 1 right -= 1 return arr arr = [1, 2, 3, 4, 5, 6, 7] print(reverse_list(arr))>

>

>

出力

[7, 6, 5, 4, 3, 2, 1]>

時間計算量 : の上)
補助スペース: ○(1)

5. insert() 関数を使用してリストを反転する

この方法では、リストを元に戻す (元のリストを変更する) ことも、リストのコピーを作成することもありません。 リスト 。代わりに、リストの 0 番目のインデックスに項目を挿入し続けます。これにより、リストが自動的に反転されます。

Python3




# input list> lst>=> [>10>,>11>,>12>,>13>,>14>,>15>]> # the above input can also be given as> # lst=list(map(int,input().split()))> l>=> []># empty list> # iterate to reverse the list> for> i>in> lst:> ># reversing the list> >l.insert(>0>, i)> # printing result> print>(l)>

>

>

出力

[15, 14, 13, 12, 11, 10]>

時間計算量: の上)
補助スペース: O(n)。n はリストの長さです。

6. リスト内包表記を使用してリストを反転する

この手法では、リストはその場でソートされません。元の配列のコピーは必要ありません。を使用しております リストの内包表記 配列を反転してリストを返します。

配列の長さを見つけて、範囲を使用してそれを反復処理します。ここで、最後の要素を最初の要素に置き換えるには、反復子のインデックスから元のリストの長さを減算します。

Python3




original_list>=> [>10>,>11>,>12>,>13>,>14>,>15>]> new_list>=> [original_list[>len>(original_list)>-> i]> >for> i>in> range>(>1>,>len>(original_list)>+>1>)]> print>(new_list)>

>

>

出力

[15, 14, 13, 12, 11, 10]>

時間計算量: O(n)、n はoriginal_list の長さです。
補助スペース: の上)、

7. Numpy を使用してリストを反転する

ここで使用します ぎこちないパッケージ :

入力リスト my_list を初期化する np.array(my_list) を使用して my_list を 1D numpy 配列に変換する my_array[::-1] を使用して配列の順序を反転する しこり .tolist() を使用して配列をリストに戻す

学校はいつ発明されましたか

逆引きリストを印刷する

Python3




import> numpy as np> # Input list> my_list>=> [>4>,>5>,>6>,>7>,>8>,>9>]> # Convert the list to a 1D numpy array> my_array>=> np.array(my_list)> # Reverse the order of the array> reversed_array>=> my_array[::>->1>]> # Convert the reversed array to a list> reversed_list>=> reversed_array.tolist()> # Print the reversed list> print>(reversed_list)>

>

>

出力:

[9, 8, 7, 6, 5, 4]>

時間計算量: の上)
補助スペース: の上)

Python でリストを反転するさまざまな方法について説明してきました。処理速度について正しく理解できるように、時間計算量と補助スペースについても言及しました。

この記事が方法を理解するのに役立つことを願っています Pythonのリストを逆にするにはどうすればよいですか? Python でリストを簡単に反転できます。