Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建列表索引超出范围的矩阵?_Python_List_Matrix_Python 2.6 - Fatal编程技术网

Python 创建列表索引超出范围的矩阵?

Python 创建列表索引超出范围的矩阵?,python,list,matrix,python-2.6,Python,List,Matrix,Python 2.6,我正在尝试创建一个3x10x10矩阵,我觉得我做得不错。我试图让GridSet函数为我设置所有值,我在第7行得到一个错误,即“列表索引超出范围”。我不明白为什么我会出错 如果有更好的方法来创建矩阵,而不需要大量的方括号(没有模块,我听说过NumPy,但我想赤裸裸地这样做),那就很好了 我运行的是2.6.x,不确定是哪个版本。任何帮助都将不胜感激 import random def GridSet(fullGrid): letters = ['A', 'B', 'C', 'D', 'E'

我正在尝试创建一个3x10x10矩阵,我觉得我做得不错。我试图让
GridSet
函数为我设置所有值,我在第7行得到一个错误,即“列表索引超出范围”。我不明白为什么我会出错

如果有更好的方法来创建矩阵,而不需要大量的方括号(没有模块,我听说过NumPy,但我想赤裸裸地这样做),那就很好了

我运行的是2.6.x,不确定是哪个版本。任何帮助都将不胜感激

import random

def GridSet(fullGrid):
    letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
    for j in range(10):
        for i in range(10):
            fullGrid[j][i][0].append(letters[j]+str(i+1))
            fullGrid[j][i][1].append(random.randrange(100)+1)
            fullGrid[j][i][2].append(0)


#main
fullGrid = [[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],        [],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[]]]
filledGrid = GridSet(fullGrid)
print filledGrid

有点困惑。这就是你想要达到的目标吗

import random

def GridSet():
    fullGrid = []
    letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']

    for j in range(10):
        collect = []
        for i in range(10):
            collect_sub = []
            collect_sub.append([letters[j] + repr(i+1), random.randrange(100)+1, 0])
            collect.append(collect_sub)
        fullGrid.append(collect)

    return fullGrid

filledGrid = GridSet()

import pprint
pprint.pprint(filledGrid)
输出

[[[['A1', 12, 0]],
  [['A2', 99, 0]],
  [['A3', 91, 0]],
  [['A4', 29, 0]],
  [['A5', 72, 0]],
  [['A6', 24, 0]],
  [['A7', 99, 0]],
  [['A8', 77, 0]],
  [['A9', 39, 0]],
  [['A10', 93, 0]]],
 [[['B1', 54, 0]],
  [['B2', 78, 0]],
  [['B3', 12, 0]],
  [['B4', 78, 0]],
  [['B5', 79, 0]],
  [['B6', 68, 0]],
  [['B7', 80, 0]],
  [['B8', 29, 0]],
  [['B9', 60, 0]],
  [['B10', 48, 0]]],
 [[['C1', 59, 0]],
  [['C2', 20, 0]],
  [['C3', 4, 0]],
  [['C4', 42, 0]],
  [['C5', 91, 0]],
  [['C6', 61, 0]],
  [['C7', 28, 0]],
  [['C8', 68, 0]],
  [['C9', 18, 0]],
  [['C10', 73, 0]]],
 [[['D1', 9, 0]],
  [['D2', 29, 0]],
  [['D3', 81, 0]],
  [['D4', 46, 0]],
  [['D5', 49, 0]],
  [['D6', 95, 0]],
  [['D7', 64, 0]],
  [['D8', 5, 0]],
  [['D9', 26, 0]],
  [['D10', 88, 0]]],
 [[['E1', 62, 0]],
  [['E2', 6, 0]],
  [['E3', 35, 0]],
  [['E4', 37, 0]],
  [['E5', 54, 0]],
  [['E6', 58, 0]],
  [['E7', 85, 0]],
  [['E8', 26, 0]],
  [['E9', 76, 0]],
  [['E10', 85, 0]]],
 [[['F1', 38, 0]],
  [['F2', 67, 0]],
  [['F3', 32, 0]],
  [['F4', 2, 0]],
  [['F5', 76, 0]],
  [['F6', 97, 0]],
  [['F7', 34, 0]],
  [['F8', 30, 0]],
  [['F9', 58, 0]],
  [['F10', 73, 0]]],
 [[['G1', 68, 0]],
  [['G2', 20, 0]],
  [['G3', 60, 0]],
  [['G4', 46, 0]],
  [['G5', 89, 0]],
  [['G6', 85, 0]],
  [['G7', 76, 0]],
  [['G8', 58, 0]],
  [['G9', 86, 0]],
  [['G10', 49, 0]]],
 [[['H1', 22, 0]],
  [['H2', 76, 0]],
  [['H3', 50, 0]],
  [['H4', 2, 0]],
  [['H5', 6, 0]],
  [['H6', 60, 0]],
  [['H7', 92, 0]],
  [['H8', 9, 0]],
  [['H9', 26, 0]],
  [['H10', 91, 0]]],
 [[['I1', 57, 0]],
  [['I2', 89, 0]],
  [['I3', 1, 0]],
  [['I4', 7, 0]],
  [['I5', 25, 0]],
  [['I6', 70, 0]],
  [['I7', 40, 0]],
  [['I8', 21, 0]],
  [['I9', 7, 0]],
  [['I10', 93, 0]]],
 [[['J1', 77, 0]],
  [['J2', 23, 0]],
  [['J3', 24, 0]],
  [['J4', 48, 0]],
  [['J5', 17, 0]],
  [['J6', 64, 0]],
  [['J7', 11, 0]],
  [['J8', 33, 0]],
  [['J9', 23, 0]],
  [['J10', 20, 0]]]]

如果缩进太深,只需删除
fullGrid
的附加,而不会破坏其余完整性。

以下嵌套列表应创建原始列表:

In [13]: [[[None for i in range(3)] for j in range(10)] for k in range(10)]
Out[13]: 
[[[None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None],
  [None, None, None]],
 [[None, None, None],
  [None, None, None],
  [None, None, None],
  ... etc
尽管您可以创建整个内容,而不是先创建列表,然后填充列表:

In [23]: l = [[[letters[j]+str(i+1), random.randrange(100)+1, 0] for i in range(10)]for j in range(10)]
In [24]: pprint(l)
[[['a1', 82, 0],
  ['a2', 77, 0],
  ['a3', 64, 0],
  ['a4', 34, 0],
  ['a5', 95, 0],
  ['a6', 69, 0],
  ['a7', 4, 0],
  ['a8', 72, 0],
  ['a9', 83, 0],
  ['a10', 100, 0]],
 [['b1', 19, 0],
  ['b2', 59, 0],
  ['b3', 15, 0],
   ...

你需要一个更好的描述,但我只想写一行字来解决我认为你在寻找的问题

import random

def GridSet(letters):
    letRange = range(len(letters))
    return [ [[letter for letter in letters] for v in letRange], 
             [[random.randrange(100)+1 for i in letRange] for v in letRange], 
             [[0 for i in letRange] for v in letRange] ]

grid = GridSet(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])

# len(grid):  3
# len(grid[0]):  10
# len(grid[0][0]):  10

您也可以使用python-v来查找您的python版本。@Joe原来这就是问题所在。但我想不出来。我使用的格式是[打开整个列表(x10)[打开第二个列表(x10)[打开第三个列表(x3)]]您如何定义fullGrid(位于底部)存在问题。如果您让它在循环之前打印fullGrid[0][0][0],会发生什么情况?您还将得到超出范围的列表索引。您的列表现在定义为2x2,而不是3x3。我在
字母列表中看到了10(0,9)个字母。我看起来不对吗