【问题标题】:Python: How to traverse a list of lists by columns, as if it was a regular 2D array (matrix)?Python:如何按列遍历列表列表,就好像它是一个常规的二维数组(矩阵)?
【发布时间】:2015-11-14 19:48:48
【问题描述】:

我有一个这样的列表列表: list=[[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15]].

我想在一个函数中使用这个列表,该函数将我的list“切片”成9 组,每组四个值,然后转储到dictlists 中。如果len(list)=n,该函数应该创建[sqrt(n)-1]*[sqrt(n)-1] 切片。在这种情况下,给定len(list)=16slices=[4-1]*[4-1]=9

这是函数:

def dictionarize1(array):
    dict1 = {}
    count = 0
    for x in range(len(array[0]) - 1) :
        for y in range(len(array[0]) - 1):
            dict1[count] = [array[x][y], array[x][y+1], array[x+1][y], array[x + 1][y+1]]
            count = count + 1
    return dict1 


dictionarize1(list) #Calling the function

我认为我的list 是一个二维数组——在这种情况下是一个4x4 矩阵——它必须像矩阵一样被遍历:row 是固定的,column 是递增的:

Columns ->
Rows v    0    1    2    3
          4    5    6    7
          8    9    10   11
          12   13   14   15  

因此,我的切片必须是[0,1,4,5][1,2,5,6][2,3,6,7][4,5,8,9] 等,没有包裹矩阵。

最终结果应该是dict={'0':[0,1,4,5],'1':[1,2,5,6],'2':[2,3,6,7],'3':[4,5,8,9],'4':[5,6,9,10],'5':[6,7,10,11],'6':[8,9,12,13],'7':[9,10,13,14],'8':[10,11,14,15]}

我的问题:这是我的for 循环按列遍历列表的正确方法(这意味着:行是固定的,列是递增的)?我不能判断我是否打印了我的list 我只得到一个常规列表,所以它让我感到困惑。谢谢!

【问题讨论】:

  • 我认为花一些时间完善您的问题可能是值得的。可能只是我,但我不知道你在问什么。
  • 我不是很有经验。我只想弄清楚列表是按我想要的还是按行遍历的。如果它按行执行,我想知道如何更改它。
  • 不应该你的范围去sqrt(len(array))它恰好在这种情况下工作,因为矩阵是4x4

标签: python arrays algorithm list matrix


【解决方案1】:

我不知道我是否明白你想要什么。如果您想显示正确的结果,请执行此操作

list = dictionarize1(list) #Calling the function
print(list) #your result is ok

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多