파이썬 튜플 차이, 인덱싱과 슬라이싱, 여러개 데이터 묶기, 대괄호 소괄호, 데이터 수정 삭제

지난 편에서 다룬 숫자형과 문자열은 변수 하나에 딱 한 개의 데이터만 담을 수 있는 단수 재료였습니다. 하지만 실무에서는 '우리 반 학생 30명의 이름', '지난달 일별 지출 내역 31개'처럼 수많은 데이터를 한 번에 묶어서 다뤄야 하는 경우가 대부분입니다. 만약 데이터가 100개라고 해서 변수를 money1, money2 ... money100까지 100개나 만드는 노가다를 하고 있다면 코딩의 의미가 퇴색되겠죠.

이때 파이썬에서 여러 개의 알맹이를 기차 칸처럼 한 줄로 엮어 거대한 하나의 바구니로 관리하는 대표적인 복합 자료형이 바로 '리스트(List)'와 '튜플(Tuple)'입니다. 엑셀의 하나의 행이나 열을 통째로 다루는 것과 비슷한 이 두 자료형은 파이썬 데이터 처리의 핵심 중의 핵심입니다. 오늘은 데이터를 스마트하게 그룹핑하고, 그중 내가 원하는 데이터만 쏙쏙 골라 꺼내는 기술을 알아보겠습니다.

1. 내 마음대로 바꾸는 데이터 기차: 리스트(List)

리스트는 파이썬에서 가장 자주 쓰이는 다중 데이터 바구니입니다. 대괄호([])를 사용해 만들며, 그 안에 들어가는 데이터들은 쉼표(,)로 구별합니다. 놀랍게도 하나의 리스트 안에 숫자와 문자열을 섞어서 담을 수도 있습니다.

Python
subway_line2 = ["강남", "역삼", "선릉", "삼성"]
my_data = [25, "홍길동", 182.5]

리스트의 가장 큰 장점은 '언제든 내용물을 추가, 수정, 삭제할 수 있다'는 유연함입니다.

  • 데이터 추가: subway_line2.append("종합운동장")을 실행하면 기차 맨 뒤 칸에 새로운 역이 자동으로 이어 붙습니다.

  • 데이터 삭제: del subway_line2[0]을 실행하면 맨 앞 칸의 데이터가 흔적도 없이 사라집니다.

2. 방대하게 엮인 데이터에서 원하는 것만 쏙: 인덱싱과 슬라이싱

리스트에 데이터를 잔뜩 모아두었다면, 이제 원하는 칸의 데이터만 조심스럽게 꺼내 쓸 수 있어야 합니다. 이때 사용하는 개념이 위치 번호를 뜻하는 '인덱스(Index)'입니다.

💡 주의: 컴퓨터는 숫자를 0부터 셉니다! (Zero-based Index)

우리는 보통 첫 번째, 두 번째라고 세지만, 파이썬을 포함한 대부분의 프로그래밍 언어는 맨 앞 칸을 0번으로 명명합니다.

  • subway_line2[0] 이라고 부르면 첫 번째 칸인 "강남"을 꺼내줍니다.

  • subway_line2[2] 라고 부르면 세 번째 칸인 "선릉"이 나옵니다.

  • 뒤에서부터 세고 싶다면 마이너스(-) 기호를 붙여 subway_line2[-1]이라고 부르면 맨 마지막 칸인 "삼성"을 센스 있게 꺼내줍니다.

범위를 통째로 잘라오기: 슬라이싱(Slicing)

피자나 식빵을 슬라이스하듯, 리스트의 특정 구간을 통째로 도려내어 가져오는 기술입니다. 콜론 기호(:)를 사용해 [시작번호 : 끝번호] 형태로 적어줍니다.

  • 예시: subway_line2[1:3]

  • 숨겨진 원리: "1번 칸부터 '3번 칸 직전(2번)'까지 가져와라"라는 뜻입니다. 즉, 끝번호로 적은 숫자의 칸은 포함되지 않고 그 앞 칸까지만 잘라옵니다. 따라서 결과는 1번인 "역삼"과 2번인 "선릉"만 들어있는 새로운 미니 리스트가 됩니다.

3. 절대 변하지 않는 단단한 바구니: 튜플(Tuple)

튜플은 리스트와 겉모습과 사용법(인덱싱, 슬라이싱 등)이 99% 똑같습니다. 딱 두 가지만 다릅니다. 대괄호가 아닌 소괄호(())로 감싸서 만든다는 점, 그리고 '한 번 만들면 내부의 데이터를 절대로 추가, 수정, 삭제할 수 없다'는 점입니다.

Python
menu = ("짜장면", "짬뽕", "탕수육")
# menu.append("군만두") -> 에러 발생! 데이터 추가 불가

수정도 안 되는 융통성 없는 자료형을 왜 쓸까요? 프로그램이 작동하는 동안 절대 바뀌어서는 안 되는 중요한 기준 데이터(예: 지도상의 위도와 경도, 세금 요율, 은행의 고정 코드 등)를 보관할 때 아주 유용합니다. 실수로 코드를 잘못 짜서 데이터가 훼손되는 것을 시스템적으로 원천 차단해 주기 때문에 프로그램의 안정성을 높여주는 고마운 존재입니다.

[핵심 요약 3줄]

  • 리스트는 대괄호([])를 사용하며 데이터의 추가(append), 수정, 삭제가 자유로워 대량의 데이터를 유연하게 다룰 때 사용한다.

  • 데이터의 위치를 가리키는 인덱스는 0번부터 시작하며, 콜론 기호를 활용한 슬라이싱([시작:끝])을 통해 원하는 구간만 잘라낼 수 있다.

  • 소괄호(())를 사용하는 튜플은 리스트와 기능이 유사하지만 한 번 생성하면 내부 데이터를 절대 변경할 수 없어 고정된 보안 데이터를 다루기에 적합하다.

[다음 편 예고] 대량의 데이터를 바구니에 담고 꺼내는 법을 마스터하셨으니, 이제 이 데이터들을 가지고 상황에 맞게 컴퓨터가 판단하도록 지능을 부여할 차례입니다. 다음 6편에서는 프로그램의 흐름을 좌우하는 핵심 열쇠인 '조건에 따라 움직이는 프로그램 만들기: if, elif, else 조건문 마스터'를 아주 쉽게 풀어드리겠습니다.