从Python 3.x中的2D列表中获取单个列表?

时间:2012-11-21 00:42:22

标签: python list python-3.x

这里遇到一些困难。我的目标是从游戏板的列中读取数字,并将这些数字作为特定列表打印出来。我对列表没有多少经验,也没有正确掌握这个概念,所以我在让它们工作时遇到了一些困难。到目前为止,我所能得到的只是:

def getColumn ():
    for i in range (0, 9):
        row = datalist[i]
        column = row[x]
        column.append[i]

似乎没有正常工作,有人能指出原因吗?我真的很感激!

谢谢!

3 个答案:

答案 0 :(得分:5)

尝试做这样的事情来使用builtins

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

cols = zip(*rows)

print cols[0]  #column 0 ....

或者更好地使用numpy

import numpy as np

my_board = [[1,2,3],[4,5,6],[7,8,9]]
np_ar   = np.array(my_board)

print np_ar[:,2]  #print column 2 ..

答案 1 :(得分:2)

这会有用吗?

col = 1
column1 = [row[col] for row in datalist]

答案 2 :(得分:2)

这是一个调整原始代码的版本:

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

def getColumn(col_num, data):
    column = []
    for i in range (0, len(data)):
        row = data[i]
        column.append(row[col_num])
    return column

给出了:

getColumn(1, datalist)
Out[9]: [2, 5, 8]

原始代码存在一些问题:

  • 你没有办法告诉getColumn你想要哪一个栏目 - 你需要把它作为你职能的论据
  • getColumn依赖于一个名为datalist的全局变量。将数据作为参数传递更安全。
  • datalist必须有九行,否则您会收到错误或无法返回完整列。