在Python中打印二维列表的列

时间:2016-07-29 07:56:59

标签: python list

假设A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

然后A[0][:]打印[1, 2, 3]

但为什么A[:][0]再次打印[1, 2, 3]

它应该打印专栏[1, 4, 7],不应该吗?

7 个答案:

答案 0 :(得分:3)

[:]相当于复制。

A[:][0]是A副本的第一行。 A[0][:]是A的第一行的副本。

两者是相同的。

获取第一列:[a[0] for a in A] 或者使用numpy和np.array(A)[:,0]

答案 1 :(得分:2)

如果您没有指定开始或结束索引,Python将返回整个数组:

A[:] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

答案 2 :(得分:2)

[:]匹配整个列表。

因此A[:]A相同。因此A[0][:]A[0]相同。

A[0][:]A[0]相同。

答案 3 :(得分:2)

请注意,[:]只会为您提供列表中所有内容的副本。所以你得到的是完全正常的。我想你想在 numpy 或Matlab中使用这个运算符。这在常规Python中不会这样做。

A[0][1, 2, 3]

因此A[0][:]也是[1, 2, 3]

A[:][[1, 2, 3], [4, 5, 6], [7, 8, 9]]

因此A[:][0][1, 2, 3]

如果您想要第一列,请尝试:

[e[0] for e in A]
# [1, 4, 7]

答案 4 :(得分:2)

A[:]返回整个列表的副本。这是A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] A[:][0]因此选择[1, 2, 3]。 如果您想要第一列,请执行循环:

col = []
for row in A:
    col.append(row[0])

答案 5 :(得分:2)

问题

A不是2-D列表:它是列表列表。考虑到这一点:

  1. A[0]是A:

    中的第一个列表
    >>> A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> A[0]
    [1, 2, 3]
    

    因此,A[0][:]:是第一个列表中的每个元素:

    >>> A[0][:]
    [1, 2, 3]
    
  2. A[:]是A的每个元素,换句话说,它是A的副本:

    >>> A[:]
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    

    因此,A[:][0]是A副本的第一个元素。

    >>> A[:][0]
    [1, 2, 3]
    
  3. 解决方案

    要获得你想要的东西,请使用numpy:

    >>> import numpy as np
    >>> A = np.array( [[1, 2, 3], [4, 5, 6], [7, 8, 9]] )
    

    A现在是一个真正的二维数组。我们可以获得A的第一行:

    >>> A[0,:]
    array([1, 2, 3])
    

    我们可以类似地获得A的第一列:

    >>> A[:,0]
    array([1, 4, 7])
    

    `

答案 6 :(得分:2)

A实际上是列表列表,而不是矩阵。使用A[:][0]您正在访问列表A的完整切片的第一个元素(列表[1,2,3])。[:]是Python切片表示法(在the relevant Stack Overflow question中解释)。

要获得[1,4,7],您必须使用[sublist[0] for sublist in A]之类的东西,这是列表理解,这是Python语言的重要元素。