
튜플(tuple), 리스트(list), 셋(set), 딕셔너리(dict)에 대해 알아봅시다.
list : 여려 가지 형태의 변수를 하나의 순서가 있는 배열로 묶어 놓은 형태 (Sequence Type)tuple : 리스트와 유사하지만 요소의 수정이 불가능한 리스트 (Sequence Type)set : 순서가 없고 중복을 혀용하지 않음 (Set Type)dictionary : Key와 Value 형태로 데이터를 저장함 (Mapping)😜 추가 지식
- Sequence Type의 공통 특징
+(결합), *(반복) 연산자a = [1,2,3] | a = [1,2,3] b = [4,5,6] | b = 2 print(a+b) | print(a*b) # [1,2,3,4,5,6] | # [1,2,3,1,2,3]인덱싱(Indexing) & 슬라이싱(Slicing)
- 슬라이싱 : 연속적인 객체들에(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법
- 인덱싱 : 연속적인 객체(리스트, 튜플, 문자열)에 부여된 번호
a = [1,2,3,4,5] print(a) # [1,2,3,4,5] print(a[0]) # 1 print(a[-1]) # 5 --- print(a[:3]) # [1,2,3] print(a[2:]) # [3,4,5]
쉼표로 구분하고 사각 괄호 [] 안에 포함됨리스트 생성
- mylist = [1,3,5,7] #대괄호를 이용하여 생성, 요소 별 구분은 쉼표
- mylist = list(string, tuple, set 등) # list 함수를 이용한 변환
- mylist = [] # 빈 리스트 생성
- mylist = list() # 빈 리스트 생성
- mylist = [value] # 1개 요소만 있는 리스트 생성
리스트 크기
- len(mylist) # 리스트 내 요소 개수 확인 (내장 함수 len)
추출(리스트의 슬라이싱)
- mylist = [7,3,8,9,1,4]
- mylist[시작인덱스:끝인덱스:증가치] # 끝 인덱스의 값은 추출하지 않는다.
- mylist[1:3] -> [3,8] mylist[:3] -> [7,3,8] mylist[4:] -> [1,4]
- mylist[-2:] -> [1,4] mylist[-2::1] -> [1,4] mylist[-2::-1] -> [1,9,8,3,7]
2차원 배열
- mylist = [[1,3,5],[3,5,7],[5,7,9]]
- mylist[0] -> [1,3,5]
- mylist[1][1] -> 5
수정
- 인덱싱과 슬라이싱을 이용하여 요소를 수정
a = [1,2,3] a[2] = 4 # a= [1,2,4] a[1:2] = ['c','d','e'] # [1,'c','d','e',4] a[1] = ['c','d','e'] # [1,['c','d','e'], 'd','e',4]
삭제
- pop() : 마지막 요소 반환 및 삭제
- pop(idx) : idx번째 요소를 반환 및 삭제
- del 연산자 삭제
- remove(v) : 값(v)와 일치하는 첫 번째 요소 삭제
a= [1,2,3,2,1] a.pop(1) # [1,3,2,1] del a[1] # [1,2,1] a.remove(1) # [2,1]
자주 사용하는 list 메소드
- count(x) : 값(x)와 일치하는 개수 반환
- extend() : 리스트 확장
a = [1,2,3] a.extend([4,5,1]) # [1,2,3,4,5,1] a.count(1) # 2
추가적인 메소드
l+= new_list // list l과 new_list를 병합한다. b = l.copy() // list l의 복사값을 b에 대입 b = list(l) // list l의 복사값을 b에 대입 b = l[:] // list l의 복사값을 b에 대입 l.index('data') // list 요소 중 'data'의 인덱스 반환 'data' in l // list에 'data' 요소가 있는지 True, False 반환 ", ".join(l) // ,를 기준으로 list를 문자열로 만든다. sorted(l) // 정렬된 복사본을 반환 l.sort() // list 자체를 정렬한다. len(l) // list 개수 max(l) // 요소 중 최대값 min(l) // 요소 중 최소값
Common Sequence Type소괄호()로 표현sys.getsizeof() 메소드를 활용해 비교 가능)append(), remove() 메소드가 없음
- t = (1,3,5)
- t = tuple([1,3,5]) # 변환 함수 사용
- t = 1,2,3 # 소괄호를 이용하지 않고 생성
- t = (1,) /t=1, # 1개 요소만 있는 Tuple 생성
😜 추가 지식
- 시퀀스 탑입들 간의 변환
myStr = 'python' list(myStr) # ['p', 'y', 't', 'h', 'o', 'n'] tuple(myStr) # ('p', 'y', 't', 'h', 'o', 'n')
- 시퀀스 타입 객체가 가진 항목이 모두 문자열이라면 join 함수를 이용하여 문자열로 변환 가능
myList = ['hello', 'min', 'seok'] "".join(myList) # 'hellominseok'
- join과 split을 이용하여 문자열과 시퀀스 객체 간에 데이터 변환 가능
t = (seq) // 튜플로 변환 t.count // 요소 개수 t.index(2) // 요소 위치 index len.(t) // 튜플 길이 max.(t) // 요소 중 최대값 min.(t) // 요소 중 최소값
중복을 허용하지 않으며 순서가 없음add(), update(), remove() 메소드를 활용하여 추가/삭제 가능세트 생성
- 중괄호 및 쉼표 사용
a = {'a','b','c','d','e'}- set 함수 사용
b = set ('abcfff') # b = {'a', 'b', 'c', 'f'}
추가
- set.add(value)나 set.update(container) 방식으로 추가
- add는 뒤에 추가 update는 앞에 추가
b.add('g') # 값을 추가 {'a', 'b', 'c', 'f', 'g'} b.update(['1','2','3']) # 여러 값 추가 {'1','2','3','a', 'b', 'c', 'f', 'g'}
삭제
- set.remove(value)나 set.pop() 방식으로 추가
- remove는 value 값을 제거하지만 pop은 임의의 값을 제거
집합 연산
s1|s2 // s1 s2 합집합 , s1.union(b)라고도 함 s1&s2 // s1 s2 교집합 , s1.intersection(b)라고도 함 s1-s2 // s1 s2 차집합 , s1.difference(b)라고도 함 s1^s2 // s1 s2 대칭 차집합 , (a-b) U (b-a) = (a U b) - (a ∩ b)의 개념으로 a.symmetric_difference(b)라고도 함 (s1|s2) - a // s1 s2 여집합 , (a U b) - a 개념
Key와 Value의 쌍과 {}로 구성되어 있음사전 생성
중괄호, 쉼표로 요소를 구분하고 요소는Key:Value pair로 전달됨
a = {1:'b','c':'d'}- dict 함수 이용
dict(key=value, key=value)이 경우 key는 문자열만 가능
a = dict(m= 'b', 지역 = '서울') # b = {'a', 'b', 'c', 'f'}- Key는 변경 불가능한 객체(immutable) -> tuple, 정수(Literal) 가능
b = {(1,2) : 'tuple'}
b[(1,2)] # 'tuple'- 단, dict 함수를 이용하여 생성할 경우 key는 문자열만 가능
사전 조회
- 인덱싱과 동일하게 대괄호에 key를 넣어 조회 (a['지역'] -> '서울')
- deict.get(key)로도 가능
- 만약 존재하지 않는 key값을 다음과 같은 방법으로 조회 했을 경우
- a['없나'] : 오류가 뜸 keyError : '없나'
- print(a.get('없나') : None
사전 수정/추가
- 딕셔너리에는 수정과 추가 방법이 같음
- 대괄호 조회를 이용한 수정/추가
- a['key'] = 'value' 꼴인데 있는 key면 수정 없는 key면 추가
- dict.update(dict)은 여러 개의 값들을 동시에 수정하고 추가할 수 있음
사전 삭제
- del을 이용해 삭제 # del dict[Key]
- dict.pop(key) # print(a.pop('key'))를 하면 'value' 가 출력되며 dict의 해당 값이 빠짐
- dict.clear() : 빈 딕셔너리로 만듬
딕셔너리 관련 함수 및 키워드
d = dict() // 딕셔너리 선언 d.keys() // 딕셔너리의 키 목록 d.values() // 딕셔너리의 값 목록 d.items() // 딕셔너리의 key-value 튜플 목록 d.copy() // 딕셔너리 복사 d.fromkeys() // seq, value 셋으로 딕셔너리 생성 d.get(key, default=None) // 해당 키의 저장된 값 확인 d.setdefault(key, default-None) // 해당 키의 저장된 값 확인(만약 값이 없으면 None) d.update(d2) // 딕셔너리에 'd2'라는 딕셔러니를 추가 len(d) // 딕셔너리 길이 str(d) // 딕셔너리를 문자열로 변환 'A' in d // 사전 내 key 존재 여부 확인(in or not in) True,False와 같은 출력이 나옴
해당 사이트의 내용과 참고 서적을 참고로 작성했습니다. 추후에 더 알게 되는 내용들을 추가하겠습니다.
[Python] List(리스트) vs Tuple(튜플) vs Set(셋) vs Dictionary(딕셔너리)