Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで昇順で要素を削除した後にリストのインデックスを取得するプログラム


個別の値のリストがあり、各番号を降順ではなく削除したいとします。削除順に番号のインデックスを見つける必要があります。

したがって、入力がnums =[4、6、2、5、3、1]の場合、1を削除すると、出力は[5、2、3、0、1、0]になり、配列は[ 4、6、2、5、3]、次に2を削除、配列は[4、6、5、3]、次に3を削除すると[4、6、5]、4を削除すると[6、5]になります。 、5を削除し、[6]、最後に6を削除します。

これを解決するには、次の手順に従います-

  • 関数my_sort()を定義します。これにはindsが必要です
  • indsのサイズが<=1の場合、
    • 戻り値
  • sorted_inds:=新しいリスト
  • mid:=indsのサイズ/2
  • 左:=my_sort(inds [インデックス0からミッド])、右:=my_sort(inds [インデックスミッドからエンド])
  • i:=0、j:=0
  • i <左のサイズ、j <右のサイズ、do
    • nums [left [i]]
    • sorted_indsの最後にleft[i]を挿入
    • i:=i + 1
  • それ以外の場合、
    • sorted_indsの最後にright[j]を挿入
    • larger [right [j]]:=large [right[j]]+左のサイズ-i
    • j:=j + 1
  • left[インデックスiから最後まで]をsorted_indsに挿入します
  • right[インデックスjから最後まで]をsorted_indsに挿入します
  • sorted_indsを返す
  • メインの方法から次のようにします-
  • 大きい:=サイズ番号の新しいリストと0で埋める
  • my_sort(範囲0から数値のサイズ)
  • num_larger_pairs:=それぞれ(nums、larger)のペアを作成し、並べ替えます
  • num_larger_pairs内のすべてのeについてe[1]のリストを返します
  • 例(Python)

    理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, nums):
          return solve(nums)
    def solve(nums):
       def my_sort(inds):
          if len(inds) <= 1:
             return inds
          sorted_inds = []
          mid = len(inds) // 2
          left, right = my_sort(inds[:mid]), my_sort(inds[mid:])
          i = j = 0
          while i < len(left) and j < len(right):
             if nums[left[i]] < nums[right[j]]:
                sorted_inds.append(left[i])
                i += 1
             else:
                sorted_inds.append(right[j])
                larger[right[j]] += len(left) - i
                j += 1
          sorted_inds.extend(left[i:])
          sorted_inds.extend(right[j:])
          return sorted_inds
       larger = [0] * len(nums)
       my_sort(range(len(nums)))
       num_larger_pairs = sorted(zip(nums, larger))
       return [e[1] for e in num_larger_pairs]
    ob = Solution()
    nums = [4, 6, 2, 5, 3, 1]
    print(ob.solve(nums))

    入力

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

    出力

    [5, 2, 3, 0, 1, 0]

    1. Pythonのインデックスでリストの要素を検索する

      2つのリストを考えてみましょう。 2番目のリストの要素は、最初のリストの要素のインデックス位置と見なす必要がある数値です。このシナリオでは、以下のPythonプログラムがあります。 マップとgetitemを使用 getitemマジックメソッドを使用してリストアイテムにアクセスできます。これをmap関数と一緒に使用できるため、2番目のリストの要素をインデックスとして取得する最初のリストから結果を取得できます。 例 listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB =

    2. Pythonでリスト要素を削除する

      リスト要素を削除するには、削除する要素が正確にわかっている場合はdelステートメントを使用し、わからない場合はremove()メソッドを使用します。 例 #!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000]; print list1 del list1[2]; print "After deleting value at index 2 : " print list1 出力 上記のコードを実行すると、次の結果が生成されます- ['physics', &#