2017-11-07 2 views
-1

Python 온라인 학습을 시작했습니다. 아래의 List 및 for 루프를 사용하여 함수 입력에서 노드와 모서리 수를 계산하는 다음 프로그램을 작성했습니다. 노드와 에지를 생성하는 간단한 규칙은 http://mathworld.wolfram.com/GridGraph.html입니다. while과 array와 for list와 for list를 사용하여 파이썬에서 같은 프로그램을 만들 수 있습니까? 이걸 제게 가르쳐 주시겠습니까?루프를 while 루프로 변환하고 목록 이해력을 목록 없음으로 변환

def gridGen(a,b): 
    return [ 
      [(x,y) for y in range(0,a)] 
     for x in range(0,b) 
    ] 

def edgeListGen(grid): 
    edgeList = [] 
    for y, row in enumerate(grid): 
     for x, val in enumerate(row): 
      if (x < len(row)-1): 
       edgeList.append(((x,y),(x+1,y))) 
      if (y < len(grid)-1): 
       edgeList.append(((x,y),(x,y+1))) 
    return edgeList 

def printGrid(grid): 
    for line in grid: 
     for value in line: 
      print(value, end=' ') 
     print() 
    print()  

def printEdgeList(L): 
    for edge in edgeList: 
     print(edge[0], ',', edge[1]) 

grid=gridGen(5,2) 
printGrid(grid) 

edgeList=edgeListGen(grid) 
printEdgeList(edgeList) 

출력 :

(0, 0) (0, 1) (0, 2) (0, 3) (0, 4) 
(1, 0) (1, 1) (1, 2) (1, 3) (1, 4) 

(0, 0) , (1, 0) 
(0, 0) , (0, 1) 
(1, 0) , (2, 0) 
(1, 0) , (1, 1) 
(2, 0) , (3, 0) 
(2, 0) , (2, 1) 
(3, 0) , (4, 0) 
(3, 0) , (3, 1) 
(4, 0) , (4, 1) 
(0, 1) , (1, 1) 
(1, 1) , (2, 1) 
(2, 1) , (3, 1) 
(3, 1) , (4, 1) 
+1

예. 것이 가능하다. –

+0

@ juanpa.arrivillaga 바닐라 파이썬에 배열이 없기 때문에 불가능합니다 :) –

+0

목록의 이해가'for' 루프로 단순화되었고'while' 루프로 변환 할 수 있습니다 [this] (https://stackoverflow.com/a/) 18900662/4249707) way –

답변

0

파이썬은 상자 밖으로 다차원 배열을 지원하지 않습니다,하지만 당신은 쉽게 NumPy와 함께이 작업을 수행 할 수 있습니다.

예를 들어, gridGen이 될 것입니다 :

관련 문제