【问题标题】:How to print a matrix of a multiple lists如何打印多个列表的矩阵
【发布时间】:2014-11-30 19:10:44
【问题描述】:

我正在尝试打印列表列表的矩阵。

例如输入可以是:

l1 = [[2,3],[3,2]]
l2 = [[1,2],[2,1],[2,2],[3,3]]
l3 = [[1,1],[1,3],[3,1]]

输出应该基于坐标。更具体地说:我正在搜索列表以查看哪个包含坐标,然后打印找到坐标的列表的名称。

编辑(感谢@sweeneyrod):每个坐标将(仅一次)在列表中。

例如:l1 包含 [2,3],因此矩阵中的那个位置“l1”被打印出来。 另一个例子:l3 包含 [1,1],所以在位置 (1,1),打印 l3。

输出:

l3 l2 l3
l2 l2 l1
l3 l1 l2

我认为可以使用 rowCount 和 columnCount 进行迭代,但我没有成功地让它工作。

有什么建议吗? 提前致谢!

【问题讨论】:

  • 试着更清楚你的输出。
  • 您能保证每个坐标都在其中一个列表中吗?
  • @sweeneyrod 是的,确实,每个坐标都在一个列表中(只有一次)。也将此添加到我的问题中。

标签: python list io


【解决方案1】:
>>> l1 = [[2,3],[3,2]]
>>> l2 = [[1,2],[2,1],[2,2],[3,3]]
>>> l3 = [[1,1],[1,3],[3,1]]
>>> b=[l1,l2,l3]
>>> import numpy as np:
>>> a=np.zeros((3,3),dtype=str) # numpy array of empty strings
>>> a
array([['', '', ''],
       ['', '', ''],
       ['', '', '']], 
      dtype='|S1')
>>> for i,j in enumerate(b):
...    for k in j:
...       a[k[0]-1][k[1]-1]='l'+str(i+1)
... 
>>> for i in a: print i
... 
['l3', 'l2', 'l3']
['l2', 'l2', 'l1']
['l3', 'l1', 'l2']

在没有 numpy 的情况下初始化矩阵:

>>> a=[]
>>> cols=3
>>> rows=2
>>> a = [[0]*rows for i in range(cols)]
>>> a
[[0, 0], [0, 0], [0, 0]]

【讨论】:

  • 谢谢!让它像这样工作。您是否还知道如何使用多列/行生成像 a=[[0,0,0],[0,0,0],[0,0,0]] 这样的矩阵?跨度>
  • 你可以使用 numpy.我将在我的答案中上传代码行。
  • 嗯,很奇怪。我不能在 Python 3.4.2 中使用 numpy。我并不总是有一个 nn 矩阵。有时我使用 nm 矩阵。这就是我尝试这样做的原因:a1=[] a=[] for i in range (0,columns): a1.append(0) for i in range (0,rows): a.append(a1) 结果看起来与自制 a = [[],[],etc.] 相同,但它不起作用.. 这真的很奇怪。
  • @TomVerstraete,我已经上传了代码来初始化一个 nxm 矩阵而不使用 numpy。检查一下。
【解决方案2】:

首先,您需要将这些变量放在一个列表中(或进行一些糟糕而丑陋的内省):

lists = [l1, l2, l3]

然后,让两个嵌套的for 循环遍历坐标:

for y in range(max_y):
    for x in range(max_x):
        for index, value in enumerate(lists):
            if [x, y] in value:
                print("l{}".format(value), end=" ")
                break
    print()

函数enumerate 迭代某事物及其索引:

list(enumerate(["a", "b", "c"])) == [(1, "a"), (2, "b"), (3, "c")]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多