챕터 2: 리스트(list)와 튜플(tuple) - 오토마우스의 동작 계획하기 📝
파이썬의 핵심 데이터 구조인 **리스트(list)**와 **튜플(tuple)**에 대해 알아보겠습니다.
이 두 가지를 왜 배워야 하는지, 그리고 어떻게 오토마우스에 적용하는지 자세히 알려드릴게요.
1. 개념 이해: 왜 리스트와 튜플이 필요한가요? 🤔
오토마우스를 만든다는 것은 단순한 마우스 조작을 넘어, '무엇을, 어디서, 어떻게' 해야 할지에 대한
일련의 지시 사항들을 컴퓨터에게 전달하는 것입니다.
예를 들어, **'좌표 (100, 200)으로 이동' → '클릭' → '2초 대기'**와 같은 여러 동작을 순서대로 저장해야 합니다.
- **
리스트**는 이처럼 순서대로 나열된 여러 동작을 담을 수 있는 유연한 바구니와 같습니다. 필요에 따라 동작을 추가하거나, 잘못된 동작을 삭제할 수 있죠. - **
튜플**은 한 번 정해지면 바뀌지 않는 **'고정된 값'**을 저장하는 용도로 사용됩니다. 예를 들어, 마우스가 항상 시작해야 하는 특정 좌표는 튜플로 저장하여 실수로 변경되는 것을 막을 수 있습니다.
이 둘은 오토마우스의 동작을 체계적으로 계획하고, 프로그램의 안정성을 높이는 데 필수적인 도구입니다.
2. 리스트(list) - 유동적인 동작 스크립트 작성 ✍️
리스트는 다양한 값을 순서대로 저장하며, 내용을 마음대로 수정할 수 있는 가장 기본적인 데이터 구조입니다.
오토마우스에서는 매크로 동작들을 담는 스크립트 역할을 합니다.
# 'mouse_actions'라는 빈 리스트를 만들고, 오토마우스 동작들을 추가할 거예요.
mouse_actions = []
# 동작 1: (500, 300) 좌표로 마우스 이동
# 리스트 안에 리스트(중첩 리스트)를 사용해 각 동작의 정보를 묶습니다.
# [동작 종류, x좌표, y좌표]
mouse_actions.append(['move', 500, 300])
# 동작 2: 1초 대기
# 동작과 대기 시간을 함께 묶어 추가합니다.
mouse_actions.append(['wait', 1])
# 동작 3: 왼쪽 클릭
# 동작 종류만 필요하다면 이렇게 추가할 수 있습니다.
mouse_actions.append(['click_left'])
# 현재까지의 동작 스크립트 확인
print(mouse_actions)
# 결과: [['move', 500, 300], ['wait', 1], ['click_left']]
append() 함수를 사용하면 원하는 동작을 언제든지 리스트 끝에 추가할 수 있어, 오토마우스의 기능을 쉽게 확장할 수 있습니다.
3. 튜플(tuple) - 변하면 안 되는 고정 값 저장 🔒
튜플은 리스트와 비슷하지만, 한 번 정의되면 절대로 값을 변경할 수 없는 '불변'의 특징을 가집니다.
오토마우스에서 시작 위치, 특정 버튼 좌표 등과 같이 고정된 값을 저장할 때 사용합니다.
# 프로그램 시작 시 마우스의 고정된 위치를 튜플로 저장합니다.
# 튜플은 소괄호 ()를 사용합니다.
START_POSITION = (0, 0)
# '로그인' 버튼처럼 위치가 절대 변하지 않는 좌표도 튜플로 저장합니다.
LOGIN_BUTTON_COORD = (850, 450)
# 튜플의 값을 변경하려 하면 에러가 발생합니다.
# LOGIN_BUTTON_COORD[0] = 900
# 에러 메시지: 'tuple' object does not support item assignment
튜플을 사용하면 중요한 좌표가 실수로 변경되어 프로그램이 오작동하는 것을 원천적으로 방지할 수 있습니다.
4. 심화 학습: 더 효율적인 오토마우스 스크립트 만들기 🚀
A. 리스트 컴프리헨션(List Comprehension)
왜 필요한가요?
만약 일정한 간격으로 배치된 여러 버튼을 클릭해야 한다면,
같은 코드를 반복해서 작성하는 대신 리스트 컴프리헨션을 사용하면 코드를 한 줄로 압축하여
훨씬 간결하고 빠르게 만들 수 있습니다.
# y좌표가 200부터 시작해 30씩 증가하는 4개의 '클릭' 동작을 한 번에 생성합니다.
button_clicks = [['click', 500, 200 + i * 30] for i in range(4)]
print(button_clicks)
# 결과: [['click', 500, 200], ['click', 500, 230], ['click', 500, 260], ['click', 500, 290]]
반복적인 작업을 자동화하여 스크립트를 효율적으로 생성할 수 있는 강력한 기능입니다.
B. 튜플 언패킹(Tuple Unpacking)
왜 필요한가요?
리스트에 담긴 동작 정보를 가져와 사용할 때, 튜플 언패킹을 사용하면 코드를 더 읽기 쉽게 만들 수 있습니다.
# 한 가지 동작을 가져온다고 가정해 봅시다.
action = ['move', 100, 200]
# 튜플 언패킹을 사용하면 리스트의 각 값을 여러 변수에 한 번에 할당할 수 있습니다.
action_type, x_coord, y_coord = action
print(f"동작 종류: {action_type}, x좌표: {x_coord}, y좌표: {y_coord}")
# 결과: 동작 종류: move, x좌표: 100, y좌표: 200
이렇게 하면 action[0], action[1]처럼 인덱스 번호로 접근하는 대신
**변수 이름(action_type, x_coord)**으로 바로 접근할 수 있어, 코드를 이해하기가 훨씬 쉽고 유지보수도 편리해집니다.
정리하며, **리스트**는 유동적인 오토마우스 동작들을 담고, **튜플**은 변하면 안 되는 핵심 정보들을 안전하게 보관합니다. 이 두 가지를 적절히 활용해야 안정적이고 확장 가능한 오토마우스 프로그램을 만들 수 있습니다.
'파이썬 공부' 카테고리의 다른 글
| 딕셔너리와 집합 : 오토마우스 (0) | 2025.08.20 |
|---|---|
| 아두이노와 파이썬으로 오토마우스 만들기: 기초부터 완성까지 (1) | 2025.08.20 |
| 문자열 다루기 (문자열 연산, 슬라이싱) (0) | 2025.08.20 |
| 파이썬 기본 문법 (변수, 자료형) (0) | 2025.08.20 |
| 파이썬 설치 및 실행 방법 (0) | 2025.08.20 |
댓글