2017-02-26 122 views
-1

嗨,我已经写了移动元素的位置嵌套列表(由元组给定的位置)一个特定的地方嵌套列表/元组

#w=width 
#h=height 
#m=location to move(x,y) 
location=[] 

def grid(w,h,m) 
    for i in range(h): 
     new_grid = [] 
     location.append(new_grid) 
     for j in range(w): 
      if (i, j) == m: 
       new_grid.append('(a)') 
      else:  
       new_grid.append('(_)') 

我需要的功能,在第一次看一个代码例如(1,3)的x坐标,它将首先移动到第二行,然后向下移动3.我写的函数只查看由x坐标给出的内部列表。另外这个功能不应该只返回改变

任何帮助表示赞赏感谢

+0

你什么意思通过'移动到第二排做,然后down'?这是否意味着向下移动4个位置(按行)? –

+0

基本上它始于(0,0),然后如果其(1,3)它将它移动到右边然后3下来并且是明智的它将是4 – Patrick

+0

为什么不只是看'y'坐标 - >去多行 - >看'x'坐标 - >去多行? –

回答

1

为什么不能大意如下简化变量中的位置?你填充一个单元格两次,但它明显更具可读性。需要注意的是,如果你想改变由分配的global变量,你必须将其声明为这样的功能:

location = [] 

def grid(w, h, m): 
    global location 
    location = [w * ['(_)'] for i in range(h)] 
    location[m[1]][m[0]] = '(a)' 

> grid(2, 4, (1, 3)) 
print(location) 
[['(_)', '(_)'], ['(_)', '(_)'], ['(_)', '(_)'], ['(_)', '(a)']] 
> grid(2, 4, (0, 2)) 
print(location) 
[['(_)', '(_)'], ['(_)', '(_)'], ['(a)', '(_)'], ['(_)', '(_)']] 
+0

如果我想添加另一个元素来移动除了(a)我将如何做,就像你的代码中的哪个部分将被添加 – Patrick

+0

E.g. 'location [3] [0] ='(a)'' – schwobaseggl

+0

其实我只是意识到它不应该返回任何东西只是改变位置变量 – Patrick