作为一种简单的方法来测试正确的方法来提取大型tileset的某些元素,在我的程序中作为2D列表输入,我将以下内容放入Python Shell:
->>>test = [ [1,2,3],[4,5,6],[7,8,9] ]
在尝试测试时,我得到了这个:
->>>test1 = test[:][2]
->>>test1
[7, 8, 9]
从输入test[:][2]
我预期test1返回[3,6,9]
有人可以向我解释为什么我会改为[7,8,9]
吗?
另外,如果您能解释我将如何获得[3,6,9]
的输出?我知道我可以说以下内容:
>>>test1 = [ test[0][2], test[1][2], test[2][2] ]
但是如果我在我的程序环境中编写它,那条线就会更长,更难维护。如果获得[3,6,9]
的方式比我上面列出的方式更容易,我会非常感谢您对此有所了解。
答案 0 :(得分:5)
对于标准python,你可以这样做:
>>> test = [[1,2,3],[4,5,6],[7,8,9]]
>>> [x[2] for x in test]
[3, 6, 9]
>>>
至于test1 = test[:][2]
,因为test[:]
只等于test
(编辑: 实际上,它是test
的精确副本而不是相同的列表)
还可以查看numpy库。
答案 1 :(得分:0)
test[:]
会返回test
的副本,因此[[1,2,3],[4,5,6],[7,8,9]]
。因此test[:][2]
是[7,8,9]
。
使用列表补偿,您可以轻松获得所需内容:
>>> [x[2] for x in test]
[3, 6, 9]