【问题标题】:Getting a single list from a 2D list in Python 3.x?从 Python 3.x 中的二维列表中获取单个列表?
【发布时间】:2012-11-21 00:42:21
【问题描述】:

这里有一些困难。我的目标是从游戏板的列中读取数字并将这些数字打印为特定列表。我对列表没有太多经验,也没有正确掌握这个概念,所以我很难让它们起作用。到目前为止,我能想到的只有这样:

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

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

谢谢!

【问题讨论】:

  • 你能举个例子吗?
  • x 没有在任何地方定义...

标签: python list python-3.x


【解决方案1】:

尝试做这样的事情来只使用内置函数

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 ..

【讨论】:

    【解决方案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 必须正好有 9 行,否则您会收到错误或无法返回完整的列。

    【讨论】:

    • 重点是创建一个可以解决数独难题的程序。为此,我们创建了一个板并在其中放置了一些示例值。现在的目标是从该游戏板的列中获取值并从中创建一个列表。稍后将使用它来解决难题。
    • 好的,所以如果它是一个数独求解器,假设您的数据将有 9 行可能是安全的,但我认为我制作的其他 cmets 仍然适用。您是否理解其余的答案,或者您还有什么不清楚的地方?
    • 对我来说更有意义,但仍有一些事情不清楚。 “len(data)”有什么作用?
    • 它给出了行数。列表的长度是其中对象的数量,datalist 中的对象是代表每一行的列表。
    • 啊,现在说得通了。让我更简单。非常感谢马吕斯!真的很感激
    【解决方案3】:

    这行得通吗?

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

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 2015-05-25
      • 2022-06-15
      • 2021-10-25
      相关资源
      最近更新 更多