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
- nums [left [i]]
- それ以外の場合、
- sorted_indsの最後にright[j]を挿入
- larger [right [j]]:=large [right[j]]+左のサイズ-i
- j:=j + 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]
-
Pythonのインデックスでリストの要素を検索する
2つのリストを考えてみましょう。 2番目のリストの要素は、最初のリストの要素のインデックス位置と見なす必要がある数値です。このシナリオでは、以下のPythonプログラムがあります。 マップとgetitemを使用 getitemマジックメソッドを使用してリストアイテムにアクセスできます。これをmap関数と一緒に使用できるため、2番目のリストの要素をインデックスとして取得する最初のリストから結果を取得できます。 例 listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB =
-
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',