리스트(List)
리스트(List)
todos = ["숙제하기", "책읽기"]
menus = ["김밥", "라면", "돈가스", "떡볶이"]
리스트의 특징
- 여러 종류의 데이터를 자유롭게 담을 수 있음
- 리스트 안에 리스트를 담을 수 있음
- 순서가 있음
- 데이터의 추가, 삭제가 용이함
리스트 다루기
인덱스를 통한 접근 방법
- 0부터 시작
- 대괄호[] 사용
my_fruits = ["사과", "바나나", "딸기", "수박", "망고"]
print("첫 번째 과일:", my_fruits[0])
print("세 번째 과일:", my_fruits[2])
print("다섯 번째 과일:", my_fruits[4])
# 뒤에서부터 찾기
print("마지막 과일:", my_fruits[-1])
print("마지막에서 두 번째 과일:", my_fruits[-2])
print("마지막에서 세 번째 과일:", my_fruits[-3])
리스트 슬라이싱 기초
- 문자열 슬라이싱과 동일
- [시작:끝:스텝] 형태 사용
students = ["민수", "영희", "철수", "영수", "지민"]
print("처음부터 3번까지:", students[0:3])
print("2번부터 4번까지:", students[2:4])
print("처음부터 3번까지:", students[:3]) # 0은 생략 가능
print("2번부터 끝까지:", students[2:]) # 끝 번호 생략
# 스텝(step) 사용하기
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print("2칸씩 건너뛰기:", numbers[::2]) # 짝수 번호만 가져오기
print("3칸씩 건너뛰기:", numbers[::3]) # 3개씩 건너뛰며 가져오기
print("거꾸로 가져오기:", numbers[::-1]) # 역순으로 가져오기
리스트 요소 관리하기
- 새로운 값 추가
append(): 항상 리스트의 마지막에 값을 추가insert(): 원하는 위치에 값을 추가. 중간에 값을 끼워넣는 경우append()보다 실행 속도가 더 느리다.
- 기존의 값 삭제
remove(): 리스트 내의 특정 값을 찾아서 삭제del: 위치를 기준으로 삭제
- 값 수정하기
- 수정하고 싶은 위치의 인덱스를 사용
# 장보기 목록에 새로운 항목 추가하기
shopping_list = ["사과", "바나나"]
print("처음 장보기 목록:", shopping_list)
# append 사용하기: 맨 뒤에 추가
shopping_list.append("우유") # 맨 뒤에 우유 추가
print("우유 추가 후:", shopping_list)
# insert 사용하기: 원하는 위치에 추가
shopping_list.insert(1, "계란") # 1번 위치(두 번째)에 계란 추가
print("계란을 중간에 추가:", shopping_list)
- 결과
처음 장보기 목록: [‘사과’, ‘바나나’]
우유 추가 후: [‘사과’, ‘바나나’, ‘우유’]
계란을 중간에 추가: [‘사과’, ‘계란’, ‘바나나’, ‘우유’]
print("현재 장보기 목록:", shopping_list)
# remove로 삭제하기: 값으로 지우기
shopping_list.remove("바나나") # "바나나" 삭제
print("바나나 삭제 후:", shopping_list)
# del로 삭제하기: 위치로 지우기
del shopping_list[1] # 두 번째 항목 삭제
print("두 번째 항목 삭제 후:", shopping_list)
- 결과
현재 장보기 목록: [‘사과’, ‘계란’, ‘바나나’, ‘우유’]
바나나 삭제 후: [‘사과’, ‘계란’, ‘우유’]
두 번째 항목 삭제 후: [‘사과’, ‘우유’]
subjects = ["국어", "수학", "영어", "과학"]
print("현재 과목:", subjects)
# 하나의 과목 수정하기
subjects[1] = "음악" # 두 번째 과목을 "음악"으로 변경
print("수학을 음악으로 변경:", subjects)
# 여러 과목 한번에 수정하기
subjects[2:] = ["미술", "체육"] # 뒤의 두 과목을 한번에 변경
print("뒤의 두 과목 변경:", subjects)
- 결과
현재 과목: [‘국어’, ‘수학’, ‘영어’, ‘과학’]
수학을 음악으로 변경: [‘국어’, ‘음악’, ‘영어’, ‘과학’]
뒤의 두 과목 변경: [‘국어’, ‘음악’, ‘미술’, ‘체육’]
리스트 메소드 활용하기
리스트 정렬하기
sort()- 오름차순 정렬
sort(reverse=True)를 사용하면 내림차순 정렬
reverse()- 리스트의 현재 순서를 반대로 뒤집음
# 🔄 오름차순 정렬하기
numbers = [5, 2, 8, 1, 9, 3, 7]
print("숫자 정렬 전:", numbers)
numbers.sort()
print("숫자 정렬 후:", numbers)
fruits = ["바나나", "사과", "오렌지", "포도", "키위"]
print("과일 정렬 전:", fruits)
fruits.sort()
print("과일 정렬 후:", fruits)
# 📊 내림차순 정렬하기
scores = [85, 92, 78, 90, 87]
print("정렬 전 점수:", scores)
scores.sort(reverse=True)
print("내림차순 정렬 후:", scores)
# 🔁 리스트 뒤집기
animals = ["강아지", "고양이", "토끼", "햄스터"]
print("원래 순서:", animals)
animals.reverse()
print("뒤집은 후:", animals)
- 결과
숫자 정렬 전: [5, 2, 8, 1, 9, 3, 7]
숫자 정렬 후: [1, 2, 3, 5, 7, 8, 9]
과일 정렬 전: [‘바나나’, ‘사과’, ‘오렌지’, ‘포도’, ‘키위’]
과일 정렬 후: [‘바나나’, ‘사과’, ‘오렌지’, ‘키위’, ‘포도’]정렬 전 점수: [85, 92, 78, 90, 87]
내림차순 정렬 후: [92, 90, 87, 85, 78]원래 순서: [‘강아지’, ‘고양이’, ‘토끼’, ‘햄스터’]
뒤집은 후: [‘햄스터’, ‘토끼’, ‘고양이’, ‘강아지’]
리스트 요소 세기와 계산하기
count()- 리스트에서 특정 값이 몇 개 있는지 카운트
len()- 리스트의 길이. 전체 값의 개수
sum()- 숫자 리스트의 총합 계산
# A형인 학생 몇 명인지 알아보기
blood_types = ['A', 'B', 'O', 'A', 'AB', 'O', 'A', 'B']
count_a = blood_types.count('A')
print("A형인 학생 수:", count_a)
students = ["민수", "영희", "철수", "영수", "지민"]
total_students = len(students)
print("전체 학생 수:", total_students, "명")
# 시험 점수의 총점과 평균 계산하기
scores = [92, 85, 78, 90, 87]
total_score = sum(scores) # 총점 계산
average_score = total_score / len(scores) # 평균 계산
print("시험 점수:", scores)
print("총점:", total_score, "점")
print("평균:", average_score, "점")
- 결과
A형인 학생 수 : 3
전체 학생 수 : 5명
시험 점수: [92, 85, 78, 90, 87]
총점: 432 점
평균: 86.4 점
리스트 요소 찾기
index()- 찾고자 하는 요소의 인덱스를 반환
- 조건에 맞는 요소가 여러개일 경우 처음 나오는 위치만 반환
- 모든 위치에 접근하고 싶으면 for문 등을 이용
# 학급 명단에서 학생 찾기
students = ["민수", "영희", "철수", "영수", "지민"]
position = students.index("철수")
print("철수는 명단의 ", position + 1, "번째에 있습니다.")
# 같은 이름이 여러 개 있는 경우
names = ["민수", "영희", "민수", "철수", "민수"]
first_minsu = names.index("민수")
print("민수가 처음 등장하는 위치:", first_minsu + 1, "번째")
# 같은 이름이 여러 개 있는 경우 모든 위치 찾아보기
names = ["민수", "영희", "민수", "철수", "민수"]
print("전체 명단:", names)
# 모든 '민수' 찾기
all_positions = []
for i in range(len(names)):
if names[i] == "민수":
all_positions.append(i + 1)
print("민수가 있는 모든 위치:", all_positions, "번째")
- 결과
철수는 명단의 3번째에 있습니다.
민수가 처음 등장하는 위치: 1번째
전체 명단: [‘민수’, ‘영희’, ‘민수’, ‘철수’, ‘민수’]
민수가 있는 모든 위치: [1, 3, 5] 번째
리스트에서 값 꺼내기
pop()- 리스트에서 값을 꺼내면서 동시에 그 값을 삭제
- 기본적으로 마지막 값을 꺼내지만, 위치를 지정하면 원하는 위치의 값도 꺼낼 수 있음
# 카드 게임처럼 값 뽑기
cards = ["A", "2", "3", "4", "5"]
print("현재 카드덱:", cards)
last_card = cards.pop() # 마지막 카드 뽑기
print("뽑은 카드:", last_card)
print("남은 카드덱:", cards)
first_card = cards.pop(0) # 첫 번째 카드 뽑기
print("다음 뽑은 카드:", first_card)
print("최종 남은 카드덱:", cards)
- 결과
현재 카드덱: [‘A’, ‘2’, ‘3’, ‘4’, ‘5’]
뽑은 카드: 5
남은 카드덱: [‘A’, ‘2’, ‘3’, ‘4’]
다음 뽑은 카드: A
최종 남은 카드덱: [‘2’, ‘3’, ‘4’]
Leave a comment