私は、2つのリストに対していくつかの連続した操作を実行するPythonで書かれた関数を持っています。問題は、これらの関数の実行中にランダムな時間に、彼らは間違った答えを与えることです。関数内のコードはリストのPythonの連続操作が間違った順序で実行される
def temp(c, p):
random.seed(0)
x = random.randint(0 , len(c)-1)
y = random.randint(0 , len(c)-1)
s_1 = c[x][0]
s_2 = c[y][0]
p[x] += [s_1]
p[y] += [s_2]
p[x].remove(s_2)
p[y].remove(s_1)
c[x], c[y] = c[y], c[x]
return c, p
def anotherFunction():
iter = 1000
for i in iter:
c_main, p_main = temp(c, p)
です。リストのリストは0からnの範囲です。例えば、Cは、以下の
c = [[7], [6], [1], [2], [5], [4], [0], [3]]
そしてp
が含まもc
であるれindex
で点を除い0からnまでの全ての数を含むリストのリストです。
p = [[0, 2, 4, 6, 5, 1, 3]
[0, 1, 2, 3, 4, 5, 7]
[0, 2, 3, 4, 6, 7, 5]
[0, 1, 3, 5, 6, 7, 4]
[0, 2, 4, 6, 7, 3, 1]
[0, 1, 2, 3, 6, 7, 5]
[1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 4, 5, 6, 7]]
これは、関数内の任意の点に値を設定する方法です。つまり、idx
の値がc
の場合、一覧にはidx
のp
には含めないでください。 しかし、関数の実行中に、x
とy
で選択された値がスワップされますが、他の値も影響を受けます。これは、2つのリストが時々
c = [[3], [1], [4], [5], [7], [0], [2], [6]]
p = [[0, 1, 2, 4, 5, 6, 7]
[0, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 6, 7, 4]
[0, 1, 2, 3, 6, 5, 5]
[0, 1, 2, 3, 4, 6, 7]
[1, 2, 3, 4, 6, 7, 5]
[0, 1, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 7]]
私はこれらの連続的な操作は、互いの影響を受け得ているかを理解することができませんでしてるように見える方法です。この関数は別の関数のループ内で呼び出されます。
UPDATE: 私はもっと慎重に私のコードをデバッグし、ループのための2つ以上の値がx
とy
に加えてc
にスワップ取得のいくつかの反復であることを実現しました。これらの値はスワップされますが、一部の実行ではp
に更新されないため、出力が正しく表示されません。 2つの値が交換されている理由
[MCVE]を提供してください明確な問題陳述書があります。あなたはどんな結果を見ていますか?どのような結果があなたに*期待していますか*。 –
'ランダムを設定します。あなたの結果を再現できるようにします。ありがとう。 –
私の質問を編集し、 'random.seed(0)'という文を追加しました – user5340