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

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]

  1. Pythonでの継承

    この記事では、Python3.xでの継承と拡張クラスについて学習します。またはそれ以前。 継承は実際の関係をうまく表し、再利用性を提供し、推移性をサポートします。開発時間が短縮され、メンテナンスが容易になり、拡張も容易になります。 継承は大きく5つのタイプに分類されます- シングル 複数 階層的 マルチレベル ハイブリッド 上の図に示されているように、継承とは、実際に親クラスのオブジェクトを作成せずに、他のクラスの機能にアクセスしようとするプロセスです。 ここでは、単一の階層型継承の実装について学習します。 単一継承 例 # parent class class Studen

  2. Pythonの具体的な例外

    Pythonにはいくつかの一般的な例外があります。これらの例外は通常、さまざまなプログラムで発生します。これらはプログラマーによって明示的に発生する可能性があります。または、Pythonインタープリターがこれらのタイプの例外を暗黙的に発生させる可能性があります。これらの例外のいくつかは次のとおりです- 例外AssertionError アサートステートメントが失敗すると、AssertionErrorが発生する場合があります。 Pythonにはいくつかありますが、コードにassertステートメントを設定することもできます。 assertステートメントは常にtrueである必要があります。条件が失