반응형
3. List, Tupple, Dictionary
3.1 리스트(List)
3.1.1 임의의 객체를 순차적으로 저장하는 집합적 자료형
3.1.2 각 값에 대해 인덱스가 부여됨
3.1.3 변경 가능
3.1.4 대괄호 [ ] 사용
3.1.5 range() 함수를 통한 인덱스 리스트 생성 가능
range(k): 0부터 k-1까지의 숫자의 리스트를 반환함
3.2 튜플(Tupple)
3.2.1 리스트와 유사하지만 튜플 내의 값을 변경할 수 없음
3.2.2 각 값에 대해 인덱스가 부여됨
3.2.3 변경 불가능
3.2.4 소괄호 ( ) 사용
3.3 사전(Dictionary)
3.3.1 정수형 인덱스가 아닌 키를 이용하여 값을 저장 및 조회하는 자료 구조
3.3.2 저장된 각 자료에 대한 순서는 의미 없음
3.3.3 중괄호 { } 사용
3.3.4 컴머(,)를 기준으로 아이템 구분
3.3.5 사전(Dictionary)의 원소 → key : value(쌍으로 이루어짐)
3.3.6 사전.keys( ) → key만 추출(임의의 순서)
3.3.7 사전.values( ) → value만 추출(임의의 순서)
3.3.8 사전.items( ) → key와 value를 튜플로 추출(임의의 순서)
3.3.9 keys, values, items가 반환하는 자료형 → 리스트
3.4 자료형 요약 정리
자료형 |
변경가능여부 |
인덱스사용여부 |
수치형 |
변경불가능(Immutable) |
|
문자열 |
변경불가능(Immutable) |
사용 |
List |
변경가능(Mutable) |
사용 |
Tupple |
변경불가능(Immutable) |
사용 |
Dictionary |
변경가능(Mutable) |
|
3.5 실습 예제
List
# 리스트
# [ ] 대괄호로 감싸고 쉼표로 요소를 구분한다.
l1 = [1, 3, 5, 7, 9]
print(l1)
# 첫 번째 요소
print(l1[0])
# 뒤에서 첫 번째 요소
print(l1[-1])
l1 = [1, 2, 3, ['a', 'b', 'c']]
# 마지막 요소(1차원 배열)의 첫 번째 값
print(l1[-1][0])
얕은 복사와 깊은 복사
# 얕은 복사
a = [1, 2, 3, 4, 5]
b = a # 참조변수만 복사됨(실제 리스트가 복사되지 않음)
b[0] = 10
print(a)
print(b)
# 깊은 복사
a = [1, 2, 3, 4, 5]
b = a[:] # 실제 리스트가 복사됨
b[0] = 10
print(a)
print(b)
리스트 합치기
a = [1, 2, 3, 4, 5]
print(type(a))
print(len(a)) # 리스트의 요소 개수
# [start:end - 1]
# 0번부터 1번까지
print(a[0:2])
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # 리스트 합치기
print(c)
a = [1, 2, 3]
b = a * 3 # 리스트 3회 반복
print(b)
문자열 출력
a = [1, 2, 3]
print(a[2] + "hi") # 숫자와 문자열은 + 할 수 없음
print(str(a[2]) + "hi") # str(숫자): 숫자를 문자열로 변환
print(a[2], "hi") # 공백이 추가됨
리스트 변경
a = [1, 2, 3]
# 1번 추출
print(a[1:2])
print(a[1])
print(type(a[1:2]))
print(type(a[1]))
# 리스트의 내용 변경
a[1:2] = ['a', 'b', 'c']
print(a)
a = [1, 2, 3]
# 하위 리스트로 입력됨
a[1] = ['a', 'b', 'c']
print(a)
리스트 삭제
# 리스트 삭제
a = [1, 2, 3]
a[1:3] = [] # 인덱스 1 ~ 2가 지워짐
print(a)
a = [1, 2, 3]
del a[1] # 인덱스 1이 지워짐
print(a)
리스트 추가
a = [1, 2, 3]
# 리스트의 마지막 위치에 요소 추가
a.append(4)
print(a)
# 리스트의 마지막 위치에 하위 리스트 추가
a.append([5, 6])
print(a)
리스트 정렬
# 리스트의 정렬
a = [1, 4, 3, 2]
a.sort()
print(a)
a = ['a', 'c', 'b']
a.sort()
print(a)
리스트 뒤집기
# 리스트 뒤집기
list = ['a', 'c', 'b']
list.reverse()
print(list)
list.index(x[, start[, end]])
a = [1, 2, 3]
print(a.index(3)) # 리스트 a에서 3이 위치한 인덱스 값
print(a.index(1)) # 리스트 a에서 1이 위치한 인덱스 값
# 존재하지 않는 값인 경우 에러 발생
print(a.index(0)) # 리스트 a에서 0이 위치한 인덱스 값
리스트에 요소 삽입
# 리스트에 요소 삽입(insert)
list = [1, 2, 3]
print(list)
# 인덱스 0에 4 insert
list.insert(0, 4)
print(list)
리스트 요소 제거
# 리스트 요소 제거(remove)
list = [1, 2, 3, 1, 2, 3]
# 첫 번째 값만 제거
list.remove(3)
print(list)
리스트 요소 끄집어내기
# 리스트 요소 끄집어내기(pop)
# pop(): 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제
list = [1, 2, 3]
popped_item = list.pop()
print(list)
print(popped_item)
리스트 개수 세기
# 리스트 개수 세기(count)
list = [1, 2, 3, 1]
count_of_one = a.count(1)
print(count_of_one)
리스트 확장
# 리스트 확장(extend)
# extend(x)에서 x에는 리스트만 올 수 있음
list = [1, 2, 3]
list.extend([4, 5])
print(list)
in과 not in
# in과 not in
list = [1, 2, 3, 4, 5]
# list에 2가 포함되어 있는가?
result = 2 in list
print(result)
# list에 2가 포함되어 있지 않은가?
result = 2 not in list
print(result)
튜플 자료형
# 튜플 자료형
# 리스트는 대괄호 [ ]로 감싸고 튜플은 소괄호 ( )로 감싼다.
# 리스트는 수정, 삭제가 되지만 튜플은 수정, 삭제가 안 됨
t1 = (1, 2, 'a', 'b') # 튜플 ()로 감싼다.
t1[0] = 'c' # 튜플은 내용을 바꿀 수 없음
del t1[0]
t2 = (1, 2, 'a', 'b')
print(type(t2))
print(t2) # 튜플의 모든 요소 출력
print(t2[0]) # 튜플의 첫 번째 요소
# 새로운 튜플이 만들어짐
print(t1[1:]) # 인덱스 1부터 끝까지
t3 = (3, 4)
print(t2 + t3) # 튜플 합치기(새로운 튜플 생성)
print(t2)
print(t3)
print(t2 * 3) # 튜플 곱하기(반복)
# 튜플 풀기
t4 = (1, 2, 3)
# 튜플의 값을 각각의 변수에 저장
n1, n2, n3 = t4
print("{0} {1} {2}".format(n1, n2, n3))
# 변숫값 교환하기
n1, n2 = n2, n1
print("{} {}".format(n1, n2))
# 튜플과 리스트의 변환
my_list = [1, 2, 3]
my_tuple = ('x', 'y', 'z')
# 리스트를 튜플로 복사
print(tuple(my_list))
# 튜플을 리스트로 복사
print(list(my_tuple))
딕셔너리 자료형
# 딕셔너리 자료형
# key와 value를 한 쌍으로 갖는 자료형(자바의 HashMap과 비슷함)
# { key: value, key: value }
d1 = {1: 'a'}
d1[2] = 'b'
print(d1)
print(type(d1))
d2 = {"name": "이효원", "phone": "01099932233", "birth": "920528"}
print(d2)
print(d2["name"]) # 딕셔너리["key"]
print(d2.get["name"]) # 딕셔너리.get("key")
print(d2["phone"])
print(d2.get["phone"])
print(d2["birth"])
print(d2.get["birth"])
# 해당 Key가 딕셔너리 안에 있는지 조사하기(in)
a = {'name': '이도훈', 'phone': '01099933323', 'birth': '920528'}
b = 'name' in a
print(b)
b = 'email' in a
print(b)
True
False
# 집합 자료형
# 중복값을 허용하지 않음, 순서가 없음
s1 = set([1, 2, 3])
print(s1)
{1, 2, 3}
# 교집합
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
s3 = s1 & s2
print(s3)
s3 = s1.intersection(s2)
print(s3)
# 합집합
s4 = s1 | s2
print(s4)
s4 = s1.union(s2)
print(s4)
# 차집합
s5 = s1 - s2
print(s5)
s5 = s1.difference(s2)
print(s5)
{4, 5, 6}
{4, 5, 6}
{4, 5, 6}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
반응형