如果我在python Data
中有一個2D列表,並且我想創建一個2D列表的一部分,我從第一個索引中選擇所有元素,從第二個索引中選擇一個。爲什麼pythons切片索引提供反直覺結果?
例如。
Data = [[a,b,c],[d,e,f],[h,i,g]]
我想要清單;
raw_data = [b,e,i]
爲什麼要做類似的事情;
沒有給出所需的輸出? 我已經爲第二個指定了整個第一個索引和第一個索引。相反,我得到的輸出是;
raw_data = [d,e,f]
這是我期望得到的;
raw_data = Data[1][:]
raw_data = [d,e,f]
所以;
Data[1][:] = Data[:][1]
這與我的心智模式如何在python中的工作方式不兼容。我不得不使用循環來做到這一點;
raw_data = []
for i in xrange(0,len(Data),1):
raw_data.append(Data[i][1])
所以我的問題是,任何人都可以解釋爲什麼Data[1][:] = Data[:][1]
?
感謝您的閱讀!
採取的指數1元完整的列表將生成一個副本,所以你正在製作一個完全相同的副本,然後從中獲取項目'1',或獲取項目'1',然後複製結果。 –
我假設你來自一個具有多維列表的編程語言,如果你這樣做,可以嘗試'numpy',因爲它可以讓你做'Data [:, 1]'來獲得你想要的結果。 –
'list [:]'只是list的一個副本。這意味着'data [:] == data'(ish)和'data [1] == data [1] [:]'。所以當然''data [1] [:] == data [:] [1]' –