これをもう一度試してみましょう。私は1セットのデータを持っています。私は2つのコピーを作成し、次に異なる列に基づいて降順でコピーをソートしたい。次に、それぞれの列の累積合計を求めたいと思います。次のコードを実行すると、print(setA [x] [2])を呼び出す2つのインスタンスに対して異なる結果が得られます。forループで合計すると異なる結果を与えるPythonの累積合計
set = [[2,2,0],[1,3,0],[3,1,0]]
def getkey_setA (item):
return item[0]
setA = sorted(set, key=getkey_setA, reverse=True)
def getkey_setB (item):
return item[1]
setB = sorted(set, key=getkey_setB, reverse=True)
setA[0][2] = setA[0][0]
setB[0][2] = setB[0][1]
for x in range(1, 3):
setA[x][2] = setA[x-1][2] + setA[x][0]
print(setA[x][2])
for x in range(1, 3):
setB[x][2] = setB[x-1][2] + setB[x][1]
for x in range(1, 3):
print (setA[x][2])
これが生成します。
5
6
8
6
を私はそれが代わりに
5
6
5
6
を生成すると予想。
リストに共有参照*があるかのように*音が鳴ります(あなたのリストをコピーしていないかもしれません)(http://stackoverflow.com/questions/2612802/how-to-clone-or-copy -リスト))?しかし、[MCVE]がなければ、私たちは助けることができません。 –
Gotcha。上の編集例をご覧ください。 – Jellybeard
そして、生成される出力は何ですか?また、期待される出力は何ですか? –