在Python 3.1中显示多维数组的所有元素
我在Python里有一个多维数组,像这样:
arr = [['foo', 1], ['bar',2]]
现在,如果我想把数组里的所有东西都打印出来,我可以这样做:
print(arr[:][:])
或者我也可以直接用print(arr)。不过,如果我只想打印出每个小盒子里的第一个元素(对于这个数组来说,就是'foo'和'bar'),我想我可以这样做:
print(arr[:][0])
但是,这样只打印出了第一个数据块(['foo', 1])。我还试着反过来写(以防万一):
print(arr[0][:])
结果也是一样。所以,有没有办法让我打印出每个元组里的第一个元素(除了:
for tuple in arr:
print(tuple[0])
)呢?谢谢。
3 个回答
0
我觉得可能对Python是怎么处理索引有些误解。你可以在数组后面加上很多个[:]
,结果都是一样的。
>>> arr = [['foo', 1], ['bar',2]]
>>> print arr[:][:][:][:]
[['foo', 1], ['bar', 2]]
第二个[]
只有在你返回一个真正的像列表一样的对象时,才会去索引第二个维度。听起来你想用类似Matlab的语法,比如arr[:,0]
,那你需要用像numpy这样的库。
2
使用zip()会比你原来的方法稍微慢一些。如果你不喜欢原来的方法,因为它需要写很多行代码,你可以试试这样做:
[i[0] for i in arr]
zip()内部其实有一个for循环,所以用zip()的速度不可能比直接用for循环快。
2
你可以对数组进行转置,比如说:
>>> list(zip(*arr))[0]
('foo', 'bar')