如果我在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]' –