목차 | |
1 | 리스트 ✔ |
2 | 튜플 |
3 | 딕셔너리 |
* 데이터를 구조화하고 조작하기 위해 필요한 Python 문법
: 리스트, 튜플, 딕셔너리
더보기
실무에서의 활용
- 딥러닝 모델을 반복 학습하며 결과를 리스트에 추가
- 데이터 불러올때, 경로 처리할때 split 사용
- 데이터를 임의의 범위만큼 선택할때 슬라이싱, 인덱싱 사용
- 데이터를 변경 불가능하게 사용하고 싶을 때
- 데이터를 담는 하나의 방법
목적
- 주로 맨 처음 데이터를 불러오고 가공할 때 사용
- 결과를 저장할 때 많이 사용
기대효과
- 데이터를 자유자재로 다룰 수 있고 정리할 수 있다
📖 리스트 (list)
- 여러 값을 순서대로 담을 수 있는 가변(mutable)한 시퀀스
- 대괄호[ ]로 만들며 쉼표,로 구분함
# 1. 리스트 생성
my_list = [1, 2, 3, 4, 5]
# 2. 리스트의 기본 구조
print(my_list) # 출력: [1, 2, 3, 4, 5]
리스트의 인덱싱
- 인덱싱(Indexing) : 리스트에서 특정 위치의 값에 접근하는 방법
- 파이썬에서는 첫 순서가 0임!! 1 아님!!
# 리스트 생성
numbers = [1, 2, 3, 4, 5]
# 첫 번째 요소에 접근하기
first_number = numbers[0]
print("First number:", first_number) # 출력: First number: 1
# 두 번째 요소에 접근하기
second_number = numbers[1]
print("Second number:", second_number) # 출력: First number: 2
# 음수 사용해서 마지막 요소에 접근하기
last_number = numbers[-1]
print("Last number:", last_number) # 출력: First number: 5
# 음수 인덱스를 사용하여 역순으로 요소에 접근하기
second_last_number = numbers[-2]
print("Second last number:", second_last_number) # 출력: First number: 4
# 범위를 벗어나는 인덱싱을 사용하면 에러남
sixth_number = numbers[5]
print("Sixth number:", sixth_number) # 출력 시 에러 발생
유용한 리스트 메서드
- append() : 리스트에 항목을 추가합니다. 자주 씀★ ★ ★
- extend() : 리스트에 다른 리스트의 모든 항목을 추가합니다. 자주 씀★ ★
- insert() : 리스트의 특정 위치에 항목을 삽입합니다. 구문: a_list.insert(삽입할 위치, 삽입할 값)
- remove() : 리스트에서 특정 값을 삭제합니다.
- pop() : 리스트에서 특정 위치의 값을 제거하고 반환합니다.
- index() : 리스트에서 특정 값의 인덱스를 찾습니다.
- count() : 리스트에서 특정 값의 개수를 세어줍니다.
- sort() : 리스트의 항목들을 정렬합니다.
- reverse() : 리스트의 항목들을 역순으로 뒤집습니다.
# 리스트 생성
my_list = [1, 2, 3, 4, 5]
#리스트의 다양한 메서드(Methods)
my_list.append(6) # 리스트에 새로운 항목 추가
print(my_list) # 출력: [1, 2, 3, 4, 5, 6]
my_list.extend([7, 8, 9]) # 다른 리스트의 모든 항목을 추가
print(my_list) # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]
my_list.insert(2, 10) # 두 번째 위치에 값 삽입
print(my_list) # 출력: [1, 2, 10, 3, 4, 5, 6, 7, 8, 9]
my_list.remove(3) # 값 3 삭제 (순번 아님!)
print(my_list) # 출력: [1, 2, 10, 4, 5, 6, 7, 8, 9]
popped_value = my_list.pop(5) # 다섯 번째 위치의 값 제거하고 반환
print(popped_value) # 출력: 6
print(my_list) # 출력: [1, 2, 10, 4, 5, 7, 8, 9]
print(my_list.index(4)) # 출력: 3 (값 4의 인덱스)
print(my_list.count(7)) # 출력: 1 (값 7의 개수)
my_list.sort() # 리스트 값을 순서대로 정렬
print(my_list) # 출력: [1, 2, 4, 5, 7, 8, 9, 10]
my_list.reverse() # 리스트 역순으로 뒤집기 (sort 안 쓴 상태면 그냥 그대로 뒤집음)
print(my_list) # 출력: [10, 9, 8, 7, 5, 4, 2, 1]
리스트 값 삭제
- del a_list[삭제할 요소 위치]: 특정 항목 삭제
- clear() : 모든 항목 삭제
# 리스트의 항목 삭제
del my_list[0]
print("첫 번째 항목 삭제 후 리스트:", my_list)
# 리스트 내 값들의 모든 항목 제거
my_list.clear()
print("모든 항목 제거 후 리스트:", my_list)
리스트 값 변경
- 인덱싱 활용 ex) a_list[변경할 값 위치] = 새로운 값
my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
# 리스트 값 변경하기
my_list[3] = 'dragonfruit'
print(my_list) # 출력: ['apple', 'banana', 'cherry', 'dragonfruit', 'elderberry']
중첩된 리스트에서 인덱싱
- 중첩된 리스트명 [몇번째 리스트] [요소 위치]
# 중첩된 리스트에서 인덱싱하기
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(nested_list[1][0]) # 출력: 4 (두 번째 리스트의 첫 번째 항목)
리스트 함수 실전 예시 : 간단한 데이터 계산
# 리스트를 사용한 간단한 데이터 계산 예시
grades = [85, 92, 88, 78, 90]
average_grade = sum(grades) / len(grades) # list에서 len함수는 요소의 개수 반환
print("평균 성적:", average_grade)
*참고) len함수는 list에서 요소의 개수 반환, 문자열에서는 길이 반환
리스트 슬라이싱 ★ ★ ★
- 다시 한 번! 파이썬은 맨 처음을 가리키는 인덱스가 0이! (1이 아님 유의)
- 슬라이싱을 할 때 끝에 입력할 인덱스는 내가 선택할 인덱스보다 +1을 해주어야 함
ex) 1번째부터 12번째까지의 요소를 가져올 것이면 [0:13] 이렇게 슬라이싱 - 이게 헷갈리니까 요소의 순번이 아니라 콤마(,) 개수 기준으로 슬라이싱한다고 외우는 방법도 있음
ex) list = [1,3,5,7]
list[0,2] = [1,3] ← 두번째 콤마를 기준으로 슬라이싱해서 [1,3]이 나온다~ 이런 느낌
# 리스트 슬라이싱의 구분
# 아래는 실행하는 코드가 아닙니다
new_list = old_list[start:end:step]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 1. 일부분만 추출하기
print(my_list[2:5]) # 출력: [3, 4, 5]
# 2. 시작 인덱스 생략하기 (처음부터 추출, 0번부터 4번까지)
print(my_list[:5]) # 출력: [1, 2, 3, 4, 5]
# 3. 끝 인덱스 생략하기 (끝까지 추출)
print(my_list[5:]) # 출력: [6, 7, 8, 9, 10]
# 4. 음수 인덱스 사용하기 (뒤에서부터 추출)
print(my_list[-3:]) # 출력: [8, 9, 10]
print(my_list[-3:-1]) # 출력: [8, 9] -1번째칸 즉 맨 마지막칸 앞까지 출력
# 5. 간격 설정하기 (특정 간격으로 추출)
print(my_list[1:9:2]) # 출력: [2, 4, 6, 8]
# 6. 리스트 전체를 복사하기
copy_of_list = my_list[:]
print(copy_of_list) # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 7. 리스트를 거꾸로 뒤집기 (step 활용, 근데 헷갈리니까 웬만하면 사용x)
reversed_list = my_list[::-1]
print(reversed_list) # 출력: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
reversed_list = my_list[::-2]
print(reversed_list) # 출력: [10, 8, 6, 4, 2] 맨뒤에서부터 한칸띄고 두번째칸 반복
reversed_list = my_list[5:2:-1]
print(reversed_list) # 출력: [6, 5, 4] 시작은 5니까 6번째칸, step 음수라 반대, 2니까 3번째칸 뒤까지
# [8,6,4,2]를 뽑고 싶으면
reversed_list=my_list[-3::-2]
print(reversed_list)
# 현업에서는 쓸 일 별로 없지만 코딩테스트에 나올 수 있는거
# 리스트에서 홀수 번째 인덱스의 값들 출력하기
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90]
odd_index_values = my_list[1::2]
print("홀수 번째 인덱스의 값들:", odd_index_values) # 출력: [20, 40, 60, 80]
리스트 정렬
- sort() : 오름차순 정렬이 기본값
- sort(reverse=False)가 기본, 내림차순할 때는 True로 변경
my_list.sort(reverse=False) # T/F쓸 때 첫 글자 대문자
퀴즈 풀이
# 다음 리스트에서 세 번째 요소를 출력하세요.
my_list = [10, 20, 30, 40, 50]
third = my_list[2]
print(third) # 출력: 30
# 다음 리스트에 60을 추가하세요.
my_list = [10, 20, 30, 40, 50]
my_list.append(60)
print(my_list) # 출력: [10, 20, 30, 40, 50, 60]
#다음 리스트의 길이를 출력하세요.
my_list = ['apple', 'banana', 'orange', 'grape']
len(my_list) # 출력: 4
#다음 리스트의 마지막 요소를 제거하세요.
my_list = ['car', 'bus', 'bike', 'train']
my_list.pop(-1)
print(my_list) # 출력: ['car', 'bus', 'bike']
#다음 리스트를 역순으로 출력하세요.
my_list = ['red', 'green', 'blue', 'yellow']
my_list.reverse()
print(my_list) # 출력: ['yellow', 'blue', 'green', 'red']