从2D python列表中拉出某些元素?

时间:2013-07-10 06:04:53

标签: python list testing

作为一种简单的方法来测试正确的方法来提取大型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]的方式比我上面列出的方式更容易,我会非常感谢您对此有所了解。

2 个答案:

答案 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]