자운최고지식인되기/파이썬 공부

4-1. 연속자료형 [이론 및 실습]

ssoy1206 2025. 4. 2. 17:53

연속 자료형

여러 개의 데이터 다루기

💡 연속자료형이 필요한 이유?

프로그래밍시, 한 가지 속성이나 설정에 있어 동시에 여러가지의 자료를 다루어야 하는 경우 존재

 

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_1연속자료형.ipynb
0.01MB