在下面的代碼中,當我使用它進行一堆操作後,在第一個循環中打印行時,我看到了我想要的結果。但是,在退出第一個循環後,我發現變量Dataset中的結果不同。我知道這是一個範圍界定問題,但我無法弄清楚問題所在,以及如何獲得我在第一個「打印」聲明中顯示的所需結果。感謝您的幫助python中for循環的作用域問題
import random
random.seed(1234567)
Key=[[.5,.5]]
Dataset=[[0]+[0]*1]*int(10/2) +[[1]+[0]*1]*int(10/2)
print "results I need"
for row in Dataset:
response=row[0]
for i in xrange(len(Key)):
if random.random() < Key[i][response]:
row[i+1]=response
else:
row[i+1]=1-response
print row
print "Results I get"
for row in Dataset:
print row
修改後的腳本請包括實際和預期產出的例子。 –
請注意'[[0]] * 10'實際上並不創建內部列表的拷貝('[0]')。這意味着該列表的所有十個項目將引用相同的列表實例。其中一項改變將反映在其他項目中。 –
非常感謝,這很有意義。 –