在Python 3.1中显示多维数组的所有元素

2 投票
3 回答
19485 浏览
提问于 2025-04-15 23:28

我在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')

撰写回答