回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<blockquote>
<p><strong>Possible Duplicate:</strong><br/>
<a href="https://stackoverflow.com/questions/9969609/two-separate-python-lists-acting-as-one">Two separate python lists acting as one</a> </p>
</blockquote>
<p>这段代码创建了一个列表字典,键位于<code>usens</code>。列表中充满了<code>0</code></p>
<pre><code>usens = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 302, 303, 306, 307, 308, 370, 371, 500,
501, 1000, 1010, 1020, 1100, 1200, 1201, 1202, 2000, 2001, 2002
]
empty = [[0]*length]*len(usens)
data = dict(zip(usens, empty))
pprint.pprint(data, indent=5)
data[0][0] += 1
pprint.pprint(data, indent=5)
</code></pre>
<p>第一个漂亮的打印返回预期的(已删除模糊):</p>
<pre><code>{0: [0, 0, 0, 0, 0],
1: [0, 0, 0, 0, 0],
2: [0, 0, 0, 0, 0],
3: [0, 0, 0, 0, 0],
4: [0, 0, 0, 0, 0],
5: [0, 0, 0, 0, 0],
.....
2001: [0, 0, 0, 0, 0],
2002: [0, 0, 0, 0, 0]}
</code></pre>
<p>然后我这样做:<code>data[0][0] += 1</code>,期望第一个列表(索引<code>0</code>)以<code>1</code>开头,但其他内容不变。你知道吗</p>
<p>但是,所有列表都已修改:</p>
<pre><code>{0: [1, 0, 0, 0, 0],
1: [1, 0, 0, 0, 0],
2: [1, 0, 0, 0, 0],
3: [1, 0, 0, 0, 0],
4: [1, 0, 0, 0, 0],
.....
2001: [1, 0, 0, 0, 0],
2002: [1, 0, 0, 0, 0]}
</code></pre>
<p><strong>为什么?我怎样才能只修改一个列表?</strong></p>