1. 컬렉션 타입
여러 개의 데이터 항목을 하나의 단위로 관리할 수 있게 해주는 데이터 구조를 의미합니다. 이것은 여러 개의 데이터를 하나의 변수에 저장하고, 관리할 수 있게 해줍니다. 파이썬에서는 리스트, 튜플, 세트, 딕셔너리 등이 기본적인 컬렉션 타입에 속합니다.
컬렉션 | 생성함수 | 특징 | 예시 |
리스트 | list() | 추가, 수정, 삭제 언제나 가능 | a = [1,2,3] |
튜플 | tuple() | 생성되고 나면 변경 불가능 | a =(1,2,3) |
세트 | set() | 중복된 값의 저장 불가능 | a ={1,2,3} |
딕셔너리 | dict() | 키 + 값으로 관리 | a ={'age':25} |
2. 리스트
리스트란 무엇일까요? 사전적 의미는 '목록'이며, 파이썬에서는 자료를 저장할 수 있는 자료입니다. 숫자, 문자, 수식 등 개별적인 자료들을 리스트에서는 모아서 사용할 수 있습니다.
리스트를 생성하는 방법은 대괄호[]에 자료를 쉼표로 구분해서 입력합니다. 대괄호[ ] 내부에 넣는 자료는 요소(element)입니다.
li = [요소, 요소, 요소]
li1 = [1,3,5,7,9]
print(li1)
print(type(li1))
li2 = ['김사과', '반하나','오렌지','이메론']
print(li2)
li3 = [1, 50.5, '김사과', True]
print(li3)
[1, 3, 5, 7, 9] <class 'list'> ['김사과', '반하나', '오렌지', '이메론'] [1, 50.5, '김사과', True] |
- 다른 언어 배열 특징 (C,C++, Java)
1. 데이터 타입 지정
2. 크기를 지정
3. index 순차적으로 저장
4. 데이터를 자주 이사시켜야 함
- > 불편함을 해소하기 위해 새로 list가 만들어짐 - 파이썬 list 특징
1. 다양한 형들을 묶을 수 있다
2. 데이터 크기를 유동적으로 추가하고 삭제할 수 있음 (공간 낭비가 적다)
3. 빈 index가 존재
4. 데이터가 이사할 필요가 없음
∨∨∨ 함수에 담아서 리스트를 만드는 방식∨∨∨
li4 = list([1,3,5,7,9])
print(li4)
print(type(li4))
[1, 3, 5, 7, 9] <class 'list'> |
-> 나중에 담는 그릇을 바꾸기 위해서 함수에 담기도 합니다.
예) List로 담아진 자료구조 -> Set으로 담아진 자료구조
1. 인덱싱
- 리스트의 각 항목은 위치(인덱스)를 가지고 있으며, 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작합니다.
- 리스트의 타입과 리스트 데이터의 타입은 다를 수 있습니다.
li4 = [1,3,5,7,9]
print(li4[0])
print(type(li4[0]))
print(type(li4[1]))
print(type(li4[2]))
print(type(li4[3]))
1 <class 'int'> <class 'float'> <class 'str'> <class 'bool'> |
li1 = [1,3,5,7,9]
print(li1)
print(li1[0])
print(li1[-1])
print(li1[0]+li1[-2])
[1, 3, 5, 7, 9] 1 9 8 |
2. 리스트 안에 리스트
li2 = [1, 2, '파이썬', ['김사과', '오렌지']]
print(li2)
print(type(li2))
print(li2[0])
print(type(li2[0]))
print(li2[3])
print(type(li2[3]))
print(li2[3][0])
print(type(li2[3][0]))
[1, 2, '파이썬', ['김사과', '오렌지']] <class 'list'> 1 <class 'int'> ['김사과', '오렌지'] <class 'list'> 김사과 <class 'str'> |
li3 = [1, 2, 3, ['김사과', '오렌지', '반하나',['🍕','🍟','🌭','🍔']]]
print(li3[2])
print(li3[-1])
print(li3[-1][-2])
print(li3[-1][-1][-1])
3 ['김사과', '오렌지', '반하나', ['🍕', '🍟', '🌭', '🍔']] 반하나 🍔 |
3. 슬라이싱
li1 = [10, 20, 30, 40, 50]
print(li1)
print(li1[0:3])
[10, 20, 30, 40, 50] [10, 20, 30] |
li3 = [10, 20, 30, ['김사과', '오렌지', '반하나'],40,['🍕','🍟']]
print(li3[2:6])
print(li3[5][:1])
[30, ['김사과', '오렌지', '반하나'], 40, ['🍕', '🍟']] ['🍕'] |
4. 변경
li2 = li1
print(li2)
li2[0] = 100
print(li2)
print(li1)
[100, 20, 30, 40, 50] [100, 20, 30, 40, 50] [100, 20, 30, 40, 50] |
5. 추가
li4 = [ 10, 20, 30, 40, 50]
li4[1:2] = ['😀','😊','😍']
print(li4)
# 슬라이싱을 이용하여 요소를 추가한 경우 리스트에 데이터만 포함
(차원이 유지)
[10, '😀', '😊', '😍', 30, 40, 50] |
li4 = [ 10, 20, 30, 40, 50]
li4[1] = ['😀','😊','😍']
print(li4)
# 인덱싱을 이용하여 요소를 추가한 경우 리스트 안에 리스트를 만들고 포함
(차원이 늘어난다 = 리스트가 겹겹히 생긴다)
[10, ['😀', '😊', '😍'], 30, 40, 50] |
6. 삭제
li5 = [100, 20, 30, 40, 50]
print(li5[1:3])
# 빈 리스트를 저장하면 해당 요소가 삭제됨
li5[1:3] = [ ]
print(li5)
[20, 30] [100, 40, 50] |
li5 = [100, 20, 30, 40, 50]
print(li5)
del li5[2]
print(li5)
[100, 20, 30, 40, 50] [100, 20, 40, 50] |
7. 결합
li6 = [10, 20, 30]
li7 = [40, 50, 60]
print(li6 + li7)
print(li7 + li6)
#결합된 순서에 맞게 인덱싱이 된다.
[10, 20, 30, 40, 50, 60] [40, 50, 60, 10, 20, 30] |
li6 = [10, 20, 30]
li6 = li6 + [100, 200]
print(li6)
li6 = [10, 20, 30]
li6 += [100, 200]
li6 = li6 + [100, 200]
print(li6)
[10, 20, 30, 100, 200] [10, 20, 30, 100, 200, 100, 200] |
li6 = [10, 20, 30]
print(li6[0]+li6[2])
li6[1] = '😎'
print(li6)
print(li6[0] + li6[1]) #문자열과 정수형은 더할 수 없다.
40 [10, '😎', 30] |
8. 반복
li6 = [10, 20, 30]
print(li6 *3)
[10, 20, 30, 10, 20, 30, 10, 20, 30] |
9. 함수와 메서드
#len() : 객체의 길이를 반환하는 파이썬 내장함수
# : 다양한 객체에 사용가능
li6 = [10, 20, 30]
print(len(li6))
3 |
#append() : 리스트에 사용되며, 리스트 끝에 새로운 요소를 추가
li6 = [10, 20, 30]
print(li6)
li6.append(100)
print(li6)
li6.append([200, 300])
print(li6)
[10, 20, 30] [10, 20, 30, 100] [10, 20, 30, 100, [200, 300]] |
#extend() : 리스트에 여러 요소를 추가
li6 = [10, 20, 30]
print(li6)
li6.extend([50])
print(li6)
li6.extend([100, 200, 300])
print(li6)
# 단일형식이여도 리스트형식으로 넣어야 함
# 순차적으로 들어갔다! interable
[10, 20, 30] [10, 20, 30, 50] [10, 20, 30, 50, 100, 200, 300] |
#pop(): 리스트 마지막 요소를 삭제하고 삭제된 요소를 반환
li6 = [10, 20, 30]
print(li6)
print(li6.pop())
print(li6)
[10, 20, 30] 30 [10, 20] |
li6 = [10, 20, 30]
print(li6)
temp = li6.pop()
print(temp)
# 요소에 넣어서 출력할 수도 있음
[10, 20, 30] [10, 20] 30 |
# insert() : 리스트의 특정 인덱스에 요소를 한개만 추가
li6 = [10, 20, 30]
print(li6)
li6.insert(1,100)
print(li6)
li6.insert(2,[1000,2000])
print(li6)
[10, 20, 30] [10, 100, 20, 30] [10, 100, [1000, 2000], 20, 30] |
# index() : 리스트에서 특정 값의 인덱스를 반환
li6 = [10, 20, 30]
print(li6)
print(li6.index(20))
# 없으면 에러발생
[10, 20, 30] 1 |
# reverse() : 리스트의 요소들이 순서를 반대로 변경
li7 = [100, 50, 70, 60, 20]
print(li7)
li7.reverse()
print(li7)
[100, 50, 70, 60, 20] [20, 60, 70, 50, 100] |
# 슬라이싱을 사용해 리스트의 순서를 뒤집는 방법
# 슬라이싱 [start:stop:]
# 슬라이싱 [start:stop:step:]
# start를 생략하면 -1로 간주
# stop을 생략하면 0으로 간주
li7 = [100, 50, 70, 60, 20]
print(li7)
print(li7[::-1])
#stop이 -1이므로, 앞으로 하나씩 슬라이싱
[100, 50, 70, 60, 20] [20, 60, 70, 50, 100] |
#sort() : 리스트의 요소를 정렬
li7 = [100, 50, 70, 60, 20]
print(li7)
li7.sort() #오름차순
print(li7)
[100, 50, 70, 60, 20] [20, 50, 60, 70, 100] |
li7 = [100, 50, 70, 60, 20]
print(li7)
li7.sort(reverse=True) #내림차순
print(li7)
[100, 50, 70, 60, 20] [100, 70, 60, 50, 20] |
# 문자열도 가능
# 아스키코드로 정렬
li8 = ['Apple','apple','orange','banna']
li8.sort()
print(li8)
['Apple', 'apple', 'banna', 'orange'] |
# 문자열도 가능
# 유니코드로 정렬
li9 = ['김사과','오렌지','반하나','이메론','배애리']
li9.sort()
print(li9)
#sorted() : 모든 요소를 정렬한 후 반환해주는 함수
li7 = [100, 50, 70, 60, 20]
print(li7)
print(sorted(li7)) #오름차순
print(li7) #원상태로 복귀, sorted할 때만 변환 implaced되지 않음!
result = sorted(li7)
print(result) #변수에 넣으면 완전히 바뀜
'
[100, 50, 70, 60, 20] [20, 50, 60, 70, 100] [100, 50, 70, 60, 20] [20, 50, 60, 70, 100] |
li7 = [100, 50, 70, 60, 20]
print(li7)
result = sorted(li7, reverse=True) #내림차순
print(result)
[100, 50, 70, 60, 20] [100, 70, 60, 50, 20] |
# count() : 리스트에서 특정 요소의 갯수를 반환
li10 = [10, 20, 30, 50, 20, 40, 30, 20]
print(li10.count(20))
print(li10.count(100))
3 0 |
'Python > 개념' 카테고리의 다른 글
Day 4-1. 컬렉션 타입 - 세트 (0) | 2024.03.14 |
---|---|
Day 3-2. 컬렉션 타입 - 튜플 (0) | 2024.03.13 |
Day 2-4. 과제 (0) | 2024.03.12 |
Day 2-3. 문자열 다루기 (0) | 2024.03.12 |
Day 2-2. 변수 (0) | 2024.03.12 |