Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从2D python列表中拉出某些元素?_Python_List_Testing - Fatal编程技术网

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

从2D python列表中拉出某些元素?,python,list,testing,Python,List,Testing,作为一种简单的测试方法,我将以下内容放入pythonshell中,以测试如何正确地提取大型tileset的某些元素(在我的程序中作为二维列表输入): ->>>test = [ [1,2,3],[4,5,6],[7,8,9] ] 在尝试测试之后,我得到了以下结果: ->>>test1 = test[:][2] ->>>test1 [7, 8, 9] 通过输入test[:][2]我希望test1返回[3,6,9] 有人能解释一下为什么我得

作为一种简单的测试方法,我将以下内容放入pythonshell中,以测试如何正确地提取大型tileset的某些元素(在我的程序中作为二维列表输入):

->>>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]
,我将非常感谢您能深入了解这一点。

对于标准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
的精确副本,而不是相同的列表)


还可以查看库。

对于标准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
的精确副本,而不是相同的列表)


还可以查看库。

test[:]
返回
test的副本,因此
[[1,2,3],[4,5,6],[7,8,9]
。所以
测试[:][2]
[7,8,9]
。 使用列表压缩,您可以轻松获得所需内容:

>>> [x[2] for x in test]
[3, 6, 9]

test[:]
返回
test的副本,因此
[[1,2,3],[4,5,6],[7,8,9]
。所以
测试[:][2]
[7,8,9]
。 使用列表压缩,您可以轻松获得所需内容:

>>> [x[2] for x in test]
[3, 6, 9]

更具体地说,
test[:]
test
的副本,而不仅仅是一个参考。。。例如,如果您执行了
a=test
a
test
仍将引用相同的列表,但使用
a=test[:]
a
test
时,现在将引用不同的列表,我的意思是,出于用户的目的,它实际上等于测试:)我讨厌人们挑剔我的答案,对此我很抱歉:)我只是想在这个特殊的情况下,解释一下为什么这个符号首先存在可能是有用的。没问题,实际上它让我的答案更好,所以它是好的:)冒号是一个切片符号,使用空冒号返回整个列表的一部分。如果使用括号显示操作顺序,您可以更清楚地看到这一点:
(test[:])[2]
。您刚刚获得原始列表副本的第三个元素。因此,
test[1:][2]=>(test[1:][2]
将引发一个索引器,因为
test[1:][/code>将返回一个两元素列表(
[[4,5,6],[7,8,9]
)。更具体地说,
test[:]
test
的副本,而不仅仅是一个参考。。。例如,如果您执行了
a=test
a
test
仍将引用相同的列表,但使用
a=test[:]
a
test
时,现在将引用不同的列表,我的意思是,出于用户的目的,它实际上等于测试:)我讨厌人们挑剔我的答案,对此我很抱歉:)我只是想在这个特殊的情况下,解释一下为什么这个符号首先存在可能是有用的。没问题,实际上它让我的答案更好,所以它是好的:)冒号是一个切片符号,使用空冒号返回整个列表的一部分。如果使用括号显示操作顺序,您可以更清楚地看到这一点:
(test[:])[2]
。您刚刚获得原始列表副本的第三个元素。因此,
test[1:][2]=>(test[1:][2]
)会产生一个索引器,因为
test[1:][/code>会返回一个两元素列表(
[[4,5,6],[7,8,9]]
)。我不完全理解这种语法是如何工作的,但我以前见过这种奇怪的东西。我可能会在test:print x[2]中写得更像x,我不完全理解这种语法是如何工作的,但我以前见过这种奇怪的东西。我可能会在test:print x[2]中为x编写更类似的代码