Pythonで配列をシャッフルする
配列Aがあるとすると、重複することなく一連の数値をシャッフルする必要があります。したがって、入力が[1,2,3]の場合、シャッフルの場合は[1,3,2]になり、リセット後、もう一度シャッフルすると[2,3,1]
>これを解決するには、次の手順に従います-
-
さまざまな方法があります。これらは、init()、reset()、shuffle()です。これらは以下のように動作します-
-
initは次のようになります-
-
オリジナル:=指定された配列のコピー
-
temp:=nums
-
インデックス:=0からnumsの長さまでの数値のリスト– 1
-
reset()は元の配列を返します
-
shuffle()は-
のようになります -
tempの長さが0の場合、空の配列を返します
-
i:=インデックス配列からランダムに1つのインデックスを選択し、j:=インデックス配列から別のインデックスをランダムに選択します
-
インデックスiとjに存在する要素を交換します
-
温度を返す
-
getAllPermutation()と呼ばれる別のメソッドはnumsを取ります。つまり、最初はi =0で、-
のようになります。 -
curr:=i
-
i =numsの長さの場合、
-
nums配列のコピーをallと呼ばれる別の配列に挿入します
-
戻る
-
-
for j:=currからnumsの長さ
-
インデックスjの要素とnumsからのcurrを交換します
-
getAllPermutation(nums、curr + 1)を呼び出す
-
インデックスjの要素とnumsからのcurrを交換します
-
理解を深めるために、次の実装を見てみましょう-
例
import random class Solution(object): def __init__(self, nums): self.original = [x for x in nums] self.temp = nums self.indices = [x for x in range(len(nums))] def reset(self): return self.original def shuffle(self): if not len(self.temp): return [] i = random.choice(self.indices) j = random.choice(self.indices) self.temp[i], self.temp[j] = self.temp[j], self.temp[i] return self.temp ob = Solution([1,2,3]) print(ob.shuffle()) print(ob.reset()) print(ob.shuffle())
入力
Initialize with [1,2,3] , then call shuffle(), reset() and shuffle()
出力
[2, 1, 3] [1, 2, 3] [2, 3, 1]
-
Pythonでの継承
この記事では、Python3.xでの継承と拡張クラスについて学習します。またはそれ以前。 継承は実際の関係をうまく表し、再利用性を提供し、推移性をサポートします。開発時間が短縮され、メンテナンスが容易になり、拡張も容易になります。 継承は大きく5つのタイプに分類されます- シングル 複数 階層的 マルチレベル ハイブリッド 上の図に示されているように、継承とは、実際に親クラスのオブジェクトを作成せずに、他のクラスの機能にアクセスしようとするプロセスです。 ここでは、単一の階層型継承の実装について学習します。 単一継承 例 # parent class class Studen
-
Pythonの具体的な例外
Pythonにはいくつかの一般的な例外があります。これらの例外は通常、さまざまなプログラムで発生します。これらはプログラマーによって明示的に発生する可能性があります。または、Pythonインタープリターがこれらのタイプの例外を暗黙的に発生させる可能性があります。これらの例外のいくつかは次のとおりです- 例外AssertionError アサートステートメントが失敗すると、AssertionErrorが発生する場合があります。 Pythonにはいくつかありますが、コードにassertステートメントを設定することもできます。 assertステートメントは常にtrueである必要があります。条件が失