파이썬 기초

[파이썬 기초] 10. 리스트

외양간찾는 새끼소 2025. 2. 28. 00:00

리스트는 바구니 같은 존재 입니다. 여러 데이터를 하나에 담아 놓는 것이죠. 굳이 데이터를 하나에 담는 이유는 ‘반복’을 위해서 입니다. 이후 반복을 명령하는 for문, while문을 배우면서 리스트의 필요성을 느낄 수 있을 거에요.

1. 리스트 정의

1번 이선호
2번 김대호
3번 손콩떡

위 테이블을 저장하고자 합니다.

변수에 일반적으로 저장하면 아래와 같이 저장할 수 있습니다.

num_1 = "이선호"
num_2 = "김대호"
num_3 = "손콩떡"

3개의 데이터를 저장하기 위해서 3개의 변수가 필요합니다. 이를 귀찮게 여긴 개발자들이 축약해서 저장하는 방법을 만들었습니다.

names = ["이선호",  "김대호", "손콩떡"]

대괄호를 이용해서 하나의 변수에 저장하는 것입니다. 이를 리스트 라고 합니다. 리스트 안에 있는 데이터를 “요소(element)”라고 합니다.

💡Array(배열)와 List(리스트)는 다릅니다!
파이선이 아닌 다른 언어를 배우신 분들은 Array(배열)이란 말을 많이 들었을 것입니다.
배열과 리스트는 비슷하지만 다른 특징을 지니고 있습니다.
가장 큰 다른점은 리스트는 서로다른 자료형 데이터를 저장할 수 있지만 배열은 모두 같은 자료형의 데이터만을 저장할 수 있습니다.
또한 파이썬에서도 Array는 따로 있습니다. 파이썬에 내재된 라이브러리는 아니지만 numpy라는 라이브러리에 array가 정의되어 있습니다. ( numpy이는 인공지능이나 데이터 처리 업무를 하시는 분들은 필수로 사용하는 라이브러리 입니다.)

2. 인덱스: 요소 가져오기

변수를 불러 올때는 변수명을 이용하였습니다. 리스트는 어떻게 가져 올 수 있을까요?

num_1 = "이선호"
print(num_1)

names = ["이선호", "김대호", "손콩떡"]
print(names)

단순히 리스트의 변수명을 출력하면 리스트 안 모든 내용물들이 출력됩니다. 우리는 안에 있는 이름 하나 하나, 요소들을 개별적으로 불러오고 싶을 때가 많습니다. “리스트 명[번째 수]” 를 이용하면 요소 하나하나를 불러올 수 있습니다.

names = ["이선호", "김대호", "손콩떡"]
print(names[0])
print(names[1])
print(names[2])
print(names[-1])
print(names[-2])

리스트 안 요소 번째수를 우리는 “인덱스(index)” 라고 부릅니다.

일반인들은 “첫 번째” 부터 순서를 세지만 개발자는 “0 번째” 부터 순서를 셉니다. 따라서 names리스트의 “이선호”요소는 첫 번째에 있는 것이 아니라 0번째에 있는 것입니다.

특이하게 -가 붙은 것들이 있습니다. -인덱스 의 의미는 뒤에서 세는 것을 뜻합니다. 리스트 명[-1] 는 뒤에서 첫번째, 즉 맨 마지막 요소를 의미합니다.


3. 슬라이싱 : 연속된 요소 가져오기

하나의 요소가 아니라 여러개의 요소를 가지고 오고 싶을때도 많이 있습니다. 특히 연속된 인덱스의 요소들을 가져와야 하는 경우를 많이 마주칩니다. 어떻게 연속된 요소들을 가져오는지 알아봅시다.

animals = ["dog", "cat", "tiger", "lion", "elephant", "wolf"]

# 2 ~ 5번째 요소 가져오기
print(animals[1:6])

# 0 ~ 3번째 요소 가져오기
print(animals[0:4])
print(animals[:4])

# 4 ~ 6번째 요소 가져오기
print(animals[3:6])
print(animals[3:])

연속된 요소들을 가져 올때는 리스트명[시작 인덱스:끝 인덱스] 를 사용합니다. 이때 시작 인덱스 이상 끝 인덱스 미만 요소를 가져옵니다. 즉, 끝 인덱스 번째 요소는 안가져 옵니다.(미만!!!) 이렇게 : 을 이용해서 요소 여러개를 가져오는 방법을 전문용어로 슬라이싱 이라고 말합니다.

특별히 처음부터 n번째 요소 까지 가져올 때는 시작 인덱스를 생략하고 리스트명[:n+1] 를 사용할 수 있습니다. 마찬가지로 n번째 요소 부터 마지막 요소까지 가져올 때는 마지막 인덱스를 생략하고 리스트명[n:] 을 사용 할 수 있습니다.


4. 요소 수정하기

기존 리스트에서 1번째 있는 “김대호” 요소를 “코딩” 으로 바꾸고 싶습니다. 이때 사용하는 코드를 알아봅시다.

names = ["이선호", "김대호", "손콩떡"] # 리스트 선언(초기화)
print(*names)

names[1] = "코딩"
print(*names)

간단히 리스트명[인덱스] = 수정 값 이라고 작성하시면 수정이 됩니다.

💡print(*리스트 명)
print(리스트 명)을 실행하면 대괄호와 쉼표를 포함하여 모든 요소들이 출력 됩니다. print(*리스트 명)을 실행하면 대괄호와 쉼표를 빼고 모든 요소들만 출력 할 수 있습니다.