:用于在python 3.1中显示多维数组中的所有元素
我在python中有一个多维数组,如::用于在python 3.1中显示多维数组中的所有元素,python,arrays,python-3.x,Python,Arrays,Python 3.x,我在python中有一个多维数组,如: arr = [['foo', 1], ['bar',2]] 现在,如果要打印阵列中的所有内容,可以执行以下操作: print(arr[:][:]) 或者我也可以只做打印(arr)。但是,如果我只想打印每个框的第一个元素(对于arr,这将是'foo','bar'),我会想象我会这样做: 打印(arr[:][0]) 然而,这只是打印出第一个数据博客(['foo',1]),而且,我尝试将其反转(以防万一): 打印(arr[0][:]) 我也得到了同样的结果。
arr = [['foo', 1], ['bar',2]]
现在,如果要打印阵列中的所有内容,可以执行以下操作:
print(arr[:][:])
或者我也可以只做打印(arr)。但是,如果我只想打印每个框的第一个元素(对于arr,这将是'foo','bar'),我会想象我会这样做:
打印(arr[:][0])
然而,这只是打印出第一个数据博客(['foo',1]),而且,我尝试将其反转(以防万一):
打印(arr[0][:])
我也得到了同样的结果。那么,我是否可以让它打印每个元组中的第一个元素(除了:
for tuple in arr:
print(tuple[0])
)??谢谢。您可以转置数组,例如
>>> list(zip(*arr))[0]
('foo', 'bar')
zip()将比原始解决方案慢一点。如果您不喜欢原始解决方案,因为它需要多行代码,则始终可以执行以下操作:
[i[0] for i in arr]
zip()内部有一个for循环,因此使用zip()不能比for循环快。我认为可能对python如何解析索引有误解。您可以将任意数量的
[:]
钉到阵列上,您将得到相同的东西
>>> arr = [['foo', 1], ['bar',2]]
>>> print arr[:][:][:][:]
[['foo', 1], ['bar', 2]]
当您返回实际的类似列表的对象时,第二个
[]
仅索引到第二个维度。听起来你想要Matlab语法,比如arr[:,0]
,你需要使用类似numpy的东西。只是一个解释:你的print(arr[:][:])
从arr的所有项中获取所有项。它在功能上与print(arr)
,print(arr[:])
,print(arr[:][:])
和print(arr[:])(arr[:][:][:][:][:][:][:][:][:][:][:][:][:][:])