0

ディクショナリからベクトルを再利用しようとしていますが、ベクトルをプルして名前を変更しても、Python はディクショナリを変更します。この問題に関するアイデア。これが私のコードです:

# Set up dictionary

d = {'id 1':[20,15,30]}
d['id 2'] = [5,10,50]

# Pull a vector from the dictionary and decrease the first entry in the vector

vector = d['id 2']
vector[0] = vector[0] - 1
print vector

# Pull the same vector from the dictionary (This is where I want the original vector)

vector2 = d['id 2']
vector2[0] = vector2[0] - 1 
print vector2

私が

print vector
# => [4, 10, 50]

私が

print vector2
# => [3, 10, 50]

vector2元に再割り当てしないのはなぜ[5,10,50] vectorですか? 私はこれらの両方が私に与えることを望んでいます[4,10,50]が、2番目のものは私に与えます[3,10,50]

4

2 に答える 2

1

リストを変数に割り当てると、vector実際にはリストをコピーするのではなく、リストへの参照を取得するだけです。コピーが必要な場合は、スライス演算子などを使用して明示的にコピーする必要があります。

vector = d['id 2'][:]
于 2013-10-30T13:43:06.367 に答える