List

<Code>

# Practice Project4

grid=[['.', '.', '.', '.', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
         ['O', 'O', 'O', 'O', '.', '.'],
         ['O', 'O', 'O', 'O', 'O', '.'],
         ['.', 'O', 'O', 'O', 'O', 'O'],
         ['O', 'O', 'O', 'O', 'O', '.'],
         ['O', 'O', 'O', 'O', '.', '.'],
         ['.', 'O', 'O', '.', '.', '.'],
         ['.', '.', '.', '.', '.', '.']

for x in range(len(grid)):

  for y in range(len(grid)):
    try:
      if y == len(grid)-1:
        print(grid[y][x])

      else:
        print(grid[y][x], end=' ')
    except IndexError:
      break

 

<Result>

.  .  O O . O  O  .  .
. O O O O O O O .
. O O O O O O O .
.  .  O O O O O  .  .
.  .  .  O O O  .  .  .
.  .   .  .  O  .  .  .  .

 

<Comment>

このListがどのような動きをするのかということは、結果からわかったので理解することが出来たが、このプログラム自体がなぜこのような結果をもたらすのかが理解できていない。2重for文の動きは簡単なコードを書いて確認することが出来た。

 

grid = [['.', '.', '.', '.', '.', '.'],
           ['.', 'O', 'O', '.', '.', '.'],
           ['O', 'O', 'O', 'O', '.', '.'],
           ['O', 'O', 'O', 'O', 'O', '.'],
           ['.', 'O', 'O', 'O', 'O', 'O'],
           ['O', 'O', 'O', 'O', 'O', '.'],
           ['O', 'O', 'O', 'O', '.', '.'],
           ['.', 'O', 'O', '.', '.', '.'],
           ['.', '.', '.', '.', '.', '.']]


for x in range(len(grid)):
  for y in range(len(grid)):
    print(x)
  break

print("----------"*5)

for x in range(len(grid)):
  for y in range(len(grid)):
    print(y)
  break

print("----------"*5)

for x in range(len(grid)):
  for y in range(len(grid)):
    print(grid[y][x])
  break

0
0
0
0
0
0
0
0
0
--------------------------------------------------
0
1
2
3
4
5
6
7
8
--------------------------------------------------
.
.
O
O
.
O
O
.
.
--------------------------------------------------

ただ、なぜこうなるという部分が理解できていないので、疑問を解消したい。