-1
Pythonオンライン学習を始めました。以下のListおよびforループを使用して、関数入力からノードおよびエッジを数えるために、次のプログラムを作成しました。ノードとエッジを生成する簡単なルールはhttp://mathworld.wolfram.com/GridGraph.htmlです。 whileループとリスト内包ではない配列のみを使用して、同じプログラムをPythonで作成することは可能ですか?これで私を啓発してもらえますか?ループを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)
はい。可能です。 –
@ juanpa.arrivillagaしかし、バニラ・パイソンの配列はないので、不可能です。 –
リストの理解は 'for'ループで簡素化され、' while'ループ[this](https://stackoverflow.com/a/)に変換できます。 18900662/4249707)way –