Python

240627 파이썬 메모

망고고래 2024. 6. 27. 17:59

1. for _ in range()

self.board = [' ' for _ in range(9)]

 

_: 관례적으로 사용되는 변수명. 반복문 내에서 현재 반복 중인 값이 필요하지 않을 경우 사용

 

 

2. [i*3:(i+1)*3] for i in range(3)

    def print_board(self):
        for row in [self.board[i*3:(i+1)*3] for i in range(3)]:
            print('| ' + ' | '.join(row) + ' |')

i → 0, 1, 2

[i*3:(i+1)*3] → [0:3], [3:6], [6:9]

|  |  |

|  |  |

|  |  |

 

3. enumerate()

self.board = [' ' for _ in range(9)]

for (i, x) in enumerate(self.board):
# ['x', 'x', 'o'] --> [(0, 'x'), (1, 'x'), (2, 'o')]

 

enumerate(): 각 요소와 함께 해당 요소의 인덱스 제공

(i, x): enumerate()의 결과를 언패킹한 것

 

3-1. 리스트 컴프리헨션

return [i for i, spot in enumerate(self.board) if spot == ' ']

        return [i for i, spot in enumerate(self.board) if spot == ' ']
        
        # 위 코드와 아래 코드는 같음
        
        moves = []
        for (i, spot) in enumerate(self.board):
            # ['x', 'x', 'o'] --> [(0, 'x'), (1, 'x'), (2, 'o')]
            if spot == ' ':
                moves.append(i)
        return moves

 

return

i

for

i, spot

in

enumerate(self.board)

if

spot == ' '

 

비어 있는 위치의 인덱스 목록 반환

 

참고

1) 리스트 컴프리헨션 - 제대로 파이썬 (wikidocs.net)

 

1) 리스트 컴프리헨션

## 리스트 생성하기 기존에 배운 문법으로 1부터 10까지 정수를 순서대로 가지고 있는 리스트를 생성하는코드는 다음과 같습니다. ``` numbers = [] for n i…

wikidocs.net

 

4. 컬럼 인덱스

col_ind = square % 3
        column = [self.board[col_ind+i*3] for i in range(3)]
        if all([spot == letter for spot in column]):
            return True

 

 

5. 대각선 인덱스

3x3의 경우 대각선을 이루는 인덱스는 모두 짝수

        if square % 2 == 0:
            diagonal1 = [self.board[i] for i in [0, 4, 8]] # left to right diagonal
            if all([spot == letter for spot in diagonal1]):
                return True
            diagonal2 = [self.board[i] for i in [2, 4, 6]]
            if all([spot == letter for spot in diagonal2]):
                return True

 

 

'Python' 카테고리의 다른 글

[Python] Qr코드  (0) 2024.07.04
[Python] 비밀번호 생성기  (0) 2024.07.04
[Python] 카운트다운  (0) 2024.07.04
[Python] 12 Project - 06. Tic Tac Toe  (0) 2024.07.03