티스토리 뷰

* 컬렉션 타입이란?

여러 개의 데이터 항목을 하나의 단위로 관리할 수 있게 해주는 데이터 구조.
ex) 리스트, 튜플, 세트, 딕셔너리

 

1. 리스트 (List)

여러 값들을 하나의 변수에 저장하고 관리할 수 있게 해주는 순차적인 자료구조.

 
 
#리스트 선언
list1 = [1, 3, 5, 7, 9]              # 리스트를 만들 때 주로 사용
list2 = list([1, 2, 3, 4, 5])      # 다른 자료구조를 리스트형태로 바꿀 때 많이 사용
 
list6 = [1, 2, 3, ['김사과', '오렌지', '반하나', ['🏀', '⚽️', '🎾', '🎱']]]
print(list6[2])                  # 결과 : 2
print(list6[-1])                 # 결과 : ['김사과''오렌지''반하나', ['🏀''⚽️''🎾''🎱']]]
print(list6[-1][-2])           # 결과 : 반하나
print(list6[-1][-1][-1])      # 결과 : 🎱
 
list1 = [10, 20, 30, 40, 50]
print(list1)
print(list1[0:3])        # 0부터 3전까지 (0, 1, 2번째)
 
list2 = list1
print(list2)
list2[0] = 100
print(list2)
print(list1)     # list1도 같이 바뀌어 있음
 
list4 = [10, 20, 30, 40, 50]
list4[1:2] = ['🏀', '⚽️', '🎾', '🎱']       # 슬라이싱을 이용하여 요소를 추가한 경우 리스트에 데이터만 포함
print(list4) # 결과 : [10, '🏀', '⚽️', '🎾', '🎱', 30, 40, 50]
 
list4[1] = ['🏀', '⚽️', '🎾', '🎱']         # 인덱싱을 이용하여 요소를 추가한 경우 리스트를 만들고 포함
print(list4) # 결과 : [10, ['🏀', '⚽️', '🎾', '🎱'], '⚽️', '🎾', '🎱', 30, 40, 50]
 
list5 = [100, 20, 30, 40, 50]
list5[1:3] = []        # 빈 리스트를 저장하면 해당 요소가 삭제됨
 
list6 = [10, 20, 30]
list6 = list6 + [100, 200]     # 더하는 게 아니고 추가됨
list6 += [100, 200]             # 위랑 같은 의미
print(list6 * 3)      # 3번 반복
 
# len : 객체의 길이를 반환하는 파이썬의 내장 함수
list6 = [10, 20, 30]
print(len(list6)) # 결과 : 3
 
# append : list에 사용되며, 리스트 끝에 새로운 요소를 추가하는 메서드
list6.append(40)
# list6.append(200, 300) Error : list.append() takes exactly one argument (2 given)
list6.append([200, 300]) # 리스트안의 리스트형태로 추가됨
 
# extend() : 리스트에 여러 요소를 추가, 순서대로 차곡차곡
list6.extend([50]) 
list6.extend([100, 200, 300]) # 리스트로 추가되지 않고 요소로 추가됨
 
# pop() : 리스트 마지막 요소를 삭제하고 삭제된 요소를 반환
list6 = [10, 20, 30]
temp = list6.pop()  
print(list6)     #결과 : [10, 20]
print(temp)   #결과 : 30
 
# insert() : 리스트의 특정 인덱스에 요소를 한개만 추가
list6 = [10, 20, 30]
list6.insert(1, 100)
print(list6)   #결과 : [10, 100, 20, 30]
list6.insert(2, [1000, 2000])
print(list6)   #결과 : [10, 100, [1000, 2000], 20, 30]
 
# index() : 리스트에서 특정 값의 인덱스를 반환
list6 = [10, 20, 30]
print(list6.index(20))   # 결과 : 1
#print(list6.index(100)) Error : 100 is not in list
 
# reverse() : 리스트의 요소들의 순서를 반대로 변경, 오름/내림차순 아님
list7 = [100, 50, 70, 60, 20]
list7.reverse()
print(list7)        # 결과 : [20, 60, 70, 50, 100]
 
# 슬라이싱을 사용하여 리스트의 순서를 뒤집는 방법
# [start:stop:step]
# start 생략시 -1로 간주
# stop 생략시 0으로 간주
list7 = [100, 50, 70, 60, 20]
print(list7[ : : -1])    #결과 : [20, 60, 70, 50, 100]
 
# sort() : 리스트의 요소를 정렬
list7 = [100, 50, 70, 60, 20]
list7.sort()     #기본 오름차순
list7.sort(reverse=True)     # 내림차순
 
list8 = ['Apple', 'apple', 'orange', 'banana', 'melon']
list8.sort()
print(list8)     #결과 : ['Apple', 'apple', 'banana', 'melon', 'orange'] 아스키코드 순서
 
# sorted() : 모든 요소를 정렬한 후 반환해주는 함수 
#.sort()는 list에서만 사용할 수 있고(메서드) 값을 inplace함
list7 = [100, 50, 70, 60, 20]
result = sorted(list7)          # 오름차순, 변수에 저장해주어야 함
print(result)
 
result2 = sorted(list7, reverse=True)   # 내림차순
print(result2)
 
# count() : 리스트에서 특정 요소의 개수를 반환
list10 = [10, 20, 30, 50, 20, 40, 30, 20]
print(list10.count(20))     #결과 : 3
print(list10.count(100))   #결과 : 0
 

 

2. 튜플 (Tuple)

여러 가지 데이터 타입의 값을 저장할 수 있는, 변경 불가능한 순서가 있는 데이터 구조.

 
# 튜플 선언 방법
tu1 = (1,)         # 요소가 1개일 경우 끝에 콤마를 붙여야 함
tu2 = (1, 3, 5, 7)
tu3 = tuple([1, 3, 5, 7])
tu4 = 1, 3, 5, 7
 
tu5 = ('apple', 'banana', ('⚽️', '🏀'))
 
print(tu5[1])          #type : str
print(tu5[2])         #type : tuple
print(tu5[2][0])    #type : str
 
# 튜플 요소 변경
tu5 = ('apple', 'banana', ('⚽️', '🏀'))
# tu5[0] = 'orange'         # tuple 특성상 요소 변경이 안됨
 
tu5 = ('apple', 'banana', ['⚽️', '🏀'])
tu5[2][0] = '🥎'         #리스트라서 변경 가능
#tu5[2] = '🥎'           # tuple의 요소를 바꾸는 것이라 불가능
 
# 요소 추가, 반복 가능
tu1 = (10, 20, 30)
tu2 = (40, 50, 60)
print(tu1 + tu2)
print(tu2 + tu1)         # 리스트와 동일한 결과
 
tu1 = tu1 + (10, 20)
print(tu1 * 3)
 
# in 연산자
print(2 in (2, 4, 6, 8, 10))     #True
print(3 in (2, 4, 6, 8, 10))     #False
 
# 튜플의 정렬
tu1 = (10, 30, 20, 70)
# tu1.sort() -> sort()는 inplace되기 때문에 tuple에는 sort메서드가 없음
tu1 = sorted(tu1)        #리스트로 형이 바뀜
tu1 = tuple(tu1)          #다시 tuple로 묶어주기
print(type(tu1))
 
# input 함수 : 사용자에게 데이터를 입력받는 함수 (문자형으로 입력됨)
name, age, weight = input('이름, 나이, 몸무게를 띄어쓰기로 구분하여 입력하세요 : ').split(' ')
# 결과 : 이름, 나이, 몸무게를 띄어쓰기로 구분하여 입력하세요 : 홍길동, 20, 60
 
print(name, age, weight)      #결과 : 홍길동, 20, 60
 
 
 
 
# 예제
- 국어, 영어, 수학점수를 입력받아 총점, 평균을 구하는 프로그램 작성
- 단, 입력방법은 100/70/85 형태로 입력
 
(내 풀이)
kor = int(input('국어 점수 : '))
eng = int(input('영어 점수 : '))
math = int(input('수학 점수 : '))
total = kor+eng+math
avg = total/3
 
# 결과
국어 점수 : 100
영어 점수 : 70
수학 점수 : 85
 
print('총점 : {}, 평균 : {}'.format(total, avg))
#결과
총점 : 255, 평균 : 85.0
 
 
(다른 풀이)
kor, eng, math = input('국어, 영어, 수학점수 입력(/로 구분) : ').split('/')
print(f'총점 : {int(kor) + int(eng) + int(math)}')
print(f'평균 : {(int(kor) + int(eng) + int(math))/3}')
print('평균 : %.2f' % ((int(kor) + int(eng) + int(math))/3))
 
# 결과
국어, 영어, 수학점수 입력(쉼표로 구분) : 100,70,80
총점 : 250
평균 : 83.33333333333333
평균 : 83.33
 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함