2016-11-25 118 views
2

要求:创建列表的列表。修改元素列表中的

定义函数createMatDimXDim(dim) 该函数接收的正整数数目大于2或相等,并且返回尺寸的方阵暗淡X暗淡,其中所述内容是数字,其等于行号乘以10加上列号。

预期输出:

print (createMatDimXDim (4)) 
[[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33]] 

我的代码:

def createMatDimXDim (dim): 
    lis=[[0] for i in range(dim)] 
    for i in range(dim): 
     lis[i][0]=i*10 
     for i in range(dim): 
      lis[i].append(int(lis[i][0])+1) 
    return lis 

输出继电器我的代码:

[[0, 1, 1, 1, 1], [10, 1, 11, 11, 11], [20, 1, 1, 21, 21], [30, 1, 1, 1, 31]] 

我想这样做:

lis[i].append(int(lis[i][i-1])+1) 

但它给了我一个IndexError

回答

4
def createMatDimXDim (dim): 
    lis=[[0] for i in range(dim)] 
    for i in range(dim): 
     lis[i][0]=i*10 
     for j in range(dim-1):    # for the nested loop you need to use a new 
              # variable j 
      lis[i].append(int(lis[i][j])+1) 
    return lis 

createMatDimXDim(4) 
# [[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33]] 

另一种选择与列表理解:

dim = 4 
[[i * 10 + j for j in range(dim)] for i in range(dim)] 
# [[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33]] 
2

您可以使用2D列表理解。

def createMatDimXDim(dim): 
    return [[j for j in range(i*10, i*10+dim)] for i in range(dim)] 
createMatDimXDim(4) 

输出:

[[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33]] 
2
def createMatDimXDim(dim): 
    return [[j for j in range(i*10, i*10+dim)] for i in range(dim)] 
1

一个简单易懂的方式做是:

def createMatDimXDim (dim): 
    lis=[[0] for i in range(dim)] 
    for i in range(dim): 
     lis[i][0]=i*10 
     for j in range(dim-1):          
      lis[i].append(int(lis[i][j])+1) 
    return lis 

createMatDimXDim(4) 

输出:

[[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33]]