연속 자료형
여러 개의 데이터 다루기
💡 연속자료형이 필요한 이유?
프로그래밍시, 한 가지 속성이나 설정에 있어 동시에 여러가지의 자료를 다루어야 하는 경우 존재
cf. 일주일 간 매일의 최고 온도를 기록하는 프로그램
일 | 월 | 화 | 수 | 목 | 금 | 토 |
27 | 30 | 32 | 34 | 29 | 26 | 25 |
기본 자료형 변수에 위 값들을 저장할 경우
#7일간 매일의 최고 온도를 변수별로 저장
tempsun = 27
tempmon = 30
temptue = 32
tempwed = 34
tempthu = 29
tempfri = 26
tempsat = 25
위와 같이 각 값을 입력해줄 변수를 7개 선언해야함
만약 저장해야할 값의 갯수가 늘어난다면, 선언해야할 변수의 갯수도 무한대로 증가함
연속 자료형의 종류
https://alongthestars1206.tistory.com/6
- 리스트 (List)
- 튜플(Tuple)
- 딕셔너리 (Dictionary)
- 집합(set)
List (리스트)
l=['one','two','three']
l2=[1,2,3]
l3=['a','b',[4,5,6],'c']
l4=[]
l3[1]='B'
l5=[7,8,9,'This','is','list']
▸ Number, String(기본자료형)과 달리 여러 데이터를 하나로 묶어서 저장하고 관리가 가능
▸ 리스트명=[0번째요소,1번째요소,2번째요소] 형태로 작성
▸ l4와 같이 아무 요소도 포함하지 않을 수 있으며, 추후에 원하는 데이터만 추가하여 삽입 가능
▸ l6과 같이 하나의 리스트 변수 안에 서로 다른 자료형을 포함하는 것도 가능함
▸ l3와 같이 리스트 안에 리스트 삽입도 가능
▸ l3[1]=’B’ 와 같이, 위에서 한 번 선언된 리스트 변수의 값을 이후 선언을 통해 일부 수정/삭제/생성 가능함 (리스트명=[0,1,2,3,4…] 순서로 선언됨.)
리스트를 이용하여 일주일 간의 최고 온도를 기록하는 프로그래밍 하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
27 | 30 | 32 | 34 | 29 | 26 | 25 |
tempweek = [27, 30, 32, 34, 29, 26, 25]
리스트 항목 접근하기(indexing)
💡 문자열의 경우와 마찬가지로 부여된 순서번호(0부터 시작)로 접근
항목 | 27 | 30 | 32 | 34 | 29 | 26 | 25 |
인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
음수인덱스 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
tempweek = [27, 30, 32, 34, 29, 26, 25]
print("수요일 최고온도 = ", tempweek[3])
print("토요일 최고기온 = ", tempweek[6])
print("주 중 최고 기온 = ", tempweek[-4])
리스트의 인덱스 범위를 벗어나게 되면 에러가 발생
리스트의 원소 변경하기
tempweek = [27, 30, 32, 34, 29, 26, 25]
print(tempweek)
tempweek[3]=36 #인덱스 3번의 항목값 34를 36으로 변경
print(tempweek)
리스트 내의 리스트 사용하기
list_inlist=[[0,1,2],[3,4],[5,6,7,8],[9,10,11,12,13]]
print(list_inlist[2])
#list_inlist[0] = [0,1,2]
#list_inlist[1] = [3,4]
#list_inlist[2] = [5,6,7,8]
#list_inlist[3] = [9,10,11,12,13]
리스트 내의 리스트 항목은 행-열 번호로 접근
list_inlist=[[0,1,2],[3,4],[5,6,7,8],[9,10,11,12,13]]
print(list_inlist[0][2])
print(list_inlist[3][0])
list_inlist[m][n] | m=0 | m=1 | m=2 | m=3 |
n=0 | 0 | 3 | 5 | 9 |
n=1 | 1 | 4 | 6 | 10 |
n=2 | 2 | 7 | 11 | |
n=3 | 8 | 12 | ||
n=4 | 13 |
0 | 1 | 2 | ||
list_inlist[0][0] | list_inlist[0][1] | list_inlist[0][2] | ||
3 | 4 | |||
list_inlist[1][0] | list_inlist[1][1] | |||
5 | 6 | 7 | 8 | |
list_inlist[2][0] | list_inlist[2][1] | list_inlist[2][2] | list_inlist[2][3] | |
9 | 10 | 11 | 12 | 13 |
list_inlist[3][0] | list_inlist[3][1] | list_inlist[3][2] | list_inlist[3][3] | list_inlist[3][4] |
리스트의 슬라이싱(slicing)
💡 리스트명[start:stop:step]
- stop 인덱스 항목은 추출에 포함되지 않음
- 처음 항목부터 추출할 때는 start 생략 가능
마지막 항목까지 추출할 때는 stop 생략 가능
- step만큼 인덱스를 건너뛰며 추출. 기본값은 1
- step이 음수이면 뒤에서 부터 추출
Gryffindor = ['Harry', 'Ronald', 'Hermione' ,'Dean','Neville','Ginny'] #리스트생성
Gryffindor[::-1] #역순추출
리스트 전용함수 (원소 추가, 삭제, 삽입, 확장 등)
💡 리스트 변수 뒤에 점(.)을 찍고 호출
리스트 관련 전용 함수 | 설명 |
append(x) | 리스트의 마지막 위치에 x를 추가 |
insert(index, x) | 리스트의 index 위치에 x를 삽입 |
extend( [x1, x2] ) | 리스트 끝에 [x1, x2] 리스트를 붙여서 확장 |
pop(index) | 지정한 위치에서 항목을 삭제하여 반환. index를 생략하면 리스트의 마지막 항목을 삭제하고 반환 |
remove(x) | 리스트에서 처음 발견된 x를 삭제 |
clear() | 리스트의 모든 항목을 삭제 |
count(x) | 리스트에 포함된 x의 개수를 반환 |
index(x) | 리스트에 x가 있다면 그 위치를 반환 |
sort() | 리스트 항목들을 오름차순으로 정렬. reverse 인자의 값이 True이면 내림차순으로 정렬 |
even = [] # 1부터 20까지의 정수 중 짝수만 even리스트에 담기
for i in range(1 , 21) :
if i%2 == 0 :
even.append(i)
print(even)
evenBTW2040 = [] # 21부터 40까지의 정수 중 짝수만 evenBTW2040리스트에 담기
for i in range(21, 41) :
if i%2 == 0 :
evenBTW2040.append(i)
even.extend(evenBTW2040) # even리스트에 evenBTW2040리스트를 확장시키기
print(even)
even.remove(28) # even 리스트에서 28이라는 값 지우기
weekly_weight = [41, 44, 42, 45, 40]
weekly_weight.sort()
print(weekly_weight)
리스트와 제어문
💡 연속자료형 변수는 조건문과 반복문 제어 구조 구현에 매우 효과적
- 리스트 외의 딕셔너리, 튜플 등 또한 조건문과 반복문 등에 유용하게 쓰임
- 멤버 연산자 : in, not in : 자료형 내에 특정값이 포함되어 있는가를 확인하는 연산자
list_A = ['파이썬', 100 , 'Python', 21 , 'colab']
20 in list_A # False
'Java' not in list_A # True
'Python' in list_A # True
리스트와 조건문(if)
menu = [ 'Bibimbap', 'Hamburger', 'Pasta' ]
if "Bibimbap" in menu :
print("I'd like to have Bibimbap for my dinner.")
리스트와 반복문 (for)
temps = [27,30,32,34,29,26,25] # 7일간의 최고온도
sum = 0
for i in temps : # temps 내 모든 값을 차례로 i에 대입
sum += i # i를 누적해서 더한값을 sum에 저장하는 식
print(f"Avg = {sum/len(temps)}") # 전부 더한 값을 리스트 내의 항목 갯수(길이)로 나눔(평균값)
# len() : 리스트 길이를 반환하는 함수
'자운최고지식인되기 > 파이썬 공부' 카테고리의 다른 글
4-2. 연속자료형 [이론 및 실습] (0) | 2025.04.03 |
---|---|
3-2. 선택과반복 [이론 및 실습] (1) | 2025.03.20 |
3-1. 선택과 반복 [이론 및 실습] (0) | 2025.03.05 |
2-2. 기본자료형과 입출력 [이론 및 실습] (0) | 2025.02.20 |
2-1. 기본자료형과 입출력 [이론 및 실습] (0) | 2025.02.05 |