【问题标题】:: for displaying all elements in a multidimensional array in python 3.1:用于在 python 3.1 中显示多维数组中的所有元素
【发布时间】:2011-02-27 00:24:33
【问题描述】:

我在 python 中有一个多维数组,例如:

arr = [['foo', 1], ['bar',2]]

现在,如果我想打印出数组中的所有内容,我可以这样做:

print(arr[:][:])

或者我也可以只做 print(arr)。但是,如果我只想打印出每个框的第一个元素(对于 arr,那将是 'foo'、'bar'),我想我会这样做:

打印(arr[:][0])

但是,这只是打印出第一个数据博客 (['foo', 1]),而且,我尝试反转它(以防万一):

打印(arr[0][:])

我得到了同样的东西。那么,无论如何我可以让它打印每个元组中的第一个元素(除了:

for tuple in arr:
    print(tuple[0])

)?谢谢。

【问题讨论】:

  • 只是一个解释:您的print(arr[:][:]) 会从 arr 的所有项目中获取所有项目。它在功能上等同于print(arr)print(arr[:])print(arr[:][:][:])print(arr[:][:][:][:][:][:][:][:][:][:][:][:])

标签: python arrays python-3.x


【解决方案1】:

你可以转置数组,例如

>>> list(zip(*arr))[0]
('foo', 'bar')

【讨论】:

    【解决方案2】:

    zip() 会比你原来的解决方案慢一点。如果您不喜欢原来的解决方案,因为它需要多行代码,您可以随时这样做:

    [i[0] for i in arr]
    

    zip() 内部有一个 for 循环,所以你不能比使用 zip() 的 for 循环更快。

    【讨论】:

      【解决方案3】:

      我认为对于python如何解析索引可能存在误解。您可以将任意数量的[:] 添加到阵列上,并且您会得到相同的东西。

      >>> arr = [['foo', 1], ['bar',2]]
      >>> print arr[:][:][:][:]
      [['foo', 1], ['bar', 2]]
      

      第二个[] 仅在您返回一个实际的类似列表的对象时索引到第二个维度。听起来你想要像 arr[:,0] 这样的 Matlab 语法,你需要使用像 numpy 这样的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 1970-01-01
        相关资源
        最近更新 更多