05 파이썬 집합 자료형
주의
여러 개의 값을 나타낼 수 있게 해주는 자료형 list,tuple,dict,set
1. 시퀀스 자료형
순서가 있어서 인덱스로 접근할 수 있는 자료형
연속적으로 (sequence)로 이어져 있다
1.1. list
순서가 있으며, 값의 수정, 추가, 삭제가 가능하다. (대괄호 [] 사용)
1.2. 선언과 동시에 값할당
- Code
- Result
순서가 있으며, 값의 수정, 추가, 삭제가 가능하다
a1=[1, 2, 3, 4]- 리스트 선언시
[]를 사용. - 리스트 자료형의 값은 요소(element) 라고 한다
순서가 있으며, 값의 수정, 추가, 삭제가 가능하다
a1=[1, 2, 3, 4]print(a1)b1=["안", "녕", "하", "세", "요"]print(b1)c1=[273, 32, 103, "문자열", True, False]print(c1)
- 리스트 선언시
[]를 사용. - 리스트 자료형의 값은 요소(element) 라고 한다
1.3. 선언후 할당
- Code
- Result
a1=[]비어있는 리스트를 선언후 값을 할당할수 있다.a1=[]print(a1)a1=[1,2,3]print(a1)b1=list()print(b1)b1=["가", "나", "다"]print(b1)
비어있는 리스트를 선언후 값을 할당할수 있다.
1.4. range()
- Code
- Result
참고
range(5) : 0부터 4까지range(1, 6) : 1부터 5까지range(0, 10, 2) : 0부터 9까지 2씩 증가range(10, 0, -1) : 10부터 1까지 1씩 감소
참고
range() 함수로 연속된 숫자 리스트를 만들어 주는 내장 함수
list(range(n)) # 0부터 n-1까지list(range(m, n)) # m부터 n-1까지list(range(m, n, k)) # m부터 n-1까지 k씩 증가list(range(m, n, -k)) # m부터 n+1까지 k씩 감소 # -k를 쓸 때는 시작(m)이 끝(n)보다 커야함
a1=list(range(5)) #0~4print(a1)
b1=list(range(1, 6)) #1~5print(b1)
c1=list(range(0, 10, 2)) #0~9 +=2print(c1)
d1 = list(range(10, 0, -1))print(d1)
range(5) : 0부터 4까지range(1, 6) : 1부터 5까지range(0, 10, 2) : 0부터 9까지 2씩 증가range(10, 0, -1) : 10부터 1까지 1씩 감소
1.5. tuple
순서가 있으나, 생성 후 값 수정이 불가능하다. (소괄호 () 사용)
- Code
- Result
- 튜플과리스트
참고
(38, 21, 53, 62) a=[1,2,3] # list
참고
tu=(1,2,3) tu=1,2,3
요소의 변경,삭제,추가 불가 :
a=38,21,53,62print(a)b=('mango',8,3.5,True)print(b)
(38, 21, 53, 62)('mango', 8, 3.5, True)
a=[1,2,3] # list tuple(a) print(a) # tuple b=(4,5,6) #tuple list(b) print(b) #list
1.6. 시퀀스 자료형 활용
참고
시퀀스 자료형의 종류 : list, tuple, range, string , byte, bytearray
시퀀스 자료형으로 민든 객체를 시퀀스 객체라고 하며
시퀀스 객체에 들어있는 각 값을 요소(element)라고 한다.
1.6.1. 시퀀스 자료형의 공통기능
1.6.1.1. 특정값의 확인
튜플,range, 문자열도 사용가능
- Code
- Result
a=[0,10,20,30,40,50,60,70,80,90]True
a=[0,10,20,30,40,50,60,70,80,90]print(30 in a) # 값의 포함확인print(300 not in a) # 값이 비포함 확인
TrueTrue
리스트 a에 숫자 30이 있으므로 True를 반환.
리스트 a에 숫자 300이 없으므로 True를 반환.
1.6.1.2. 시퀀스 객체 연결
- Code
- Result
py a=[0,10,20,30,40] b=[50,60,70,80,90] print(a + b) [0, 10, 20, 30, 40, 50, 60, 70, 80, 90] 두 리스트가 하나로 연결되어 새로운 리스트가 만들어짐.py a=[0,10,20,30,40] b=[50,60,70,80,90] print(a + b) [0, 10, 20, 30, 40, 50, 60, 70, 80, 90] 두 리스트가 하나로 연결되어 새로운 리스트가 만들어짐.
1.6.1.3. 시퀀스 객체 반복
1.6.2. 시퀀스 객체의 요소갯수 구하기
1.6.2.1. 리스트와 튜플
1.6.2.2. range의 숫자 생성 개수
1.6.2.3. 문자열의 길이
1.6.3. 인덱스의 사용
1.6.3.1. 음수인덱스
1.6.3.2. 인덱스 범위를 벗어난 경우
1.6.3.3. 마지막 요소에 접근하기
1.6.3.4. 요소에 값 할당
1.6.3.5. 요소 삭제 (del)
1.6.4. 슬라이스 사용
2. 비시퀀스 자료형
순서가 없어서 인덱스로 접근할 수 없는 자료형
2.1. dict
‘열쇠(Key)‘와 ‘값(Value)‘을 쌍으로 저장한다. 순서가 없고 열쇠를 통해 값에 접근한다. (중괄호 사용)
- Code
- Result
참고
{'name': '홍길동', 'age': 25, 'city': '서울'}
참고
딕셔너리는 키(Key)와 값(Value)의 쌍으로 데이터를 저장
dict_name = {키1: 값1, 키2: 값2}
a = {"name": "홍길동", "age": 25, "city": "서울"}print(a)print(a["name"]) # 키로 값 가져오기
{'name': '홍길동', 'age': 25, 'city': '서울'}홍길동
2.2. set
중복을 허용하지 않으며, 순서가 없다. (중괄호 사용)
- Code
- Result
참고
{(1, 2, 3, 4, 5)}
참고
집합(set)은 중복된 값을 자동으로 제거
set_name = {(값1, 값2, 값3)}
a = {(1, 2, 3, 3, 4, 4, 5)} print(a) b = set([1, 2, 2, 3, 3, 3]) print(b)
{(1, 2, 3, 4, 5)}{(1, 2, 3)}