본문 바로가기

파이썬

파이썬 자료구조(tuple, set, dictionary)

자료구조

1. 자료구조

- 자료구조: 파이썬에서 자료들을 저장하는 구조들

- 시퀀스: 파이썬의 가장 기초적인 자료구조(요소로 구성되어 있음)

- 파이썬에서의 6개의 내장 스퀀스: str, bytes, bytearray, list, tuple, range

- 시퀀스의 자료구조들은 동일한 연산을 지원함(인덱싱, 슬라이싱, 덧셈 연산, 곱셈 연산)

 


 

 

2. 튜플

1) 형식: tuple_name = (항목1, 항목2, ...)

2) 공백 리스트 생성: tuple_name = ( )

★ 요소가 하나뿐인 튜플을 만들 땐 요소 끝에 쉼표(,)추가해 만들기(ex. tuple = ("apple",))

3) 괄호 없이 항목들을 쉼표로 분리해도 자동으로 튜플 생성 됨(ex. tuple = "apple","banana")

4) 요소 변경 불가능!!!(기존 변경X(추가,삭제X))

    ※ 튜플 안의 리스트는 변경 가능

    ※ 튜플이 숫자를 가지고 있는 경우 '+=' 이용해 추가 가능(단일 항목X)

5) 항목 추가는 '+=' 이용(append 지원X)

   ※ 단일 항목 추가X

        ex) t += (3,4) (O)  //  t += 3,4 (O)  //  t += 3  (X)

              t += 'kiwi' (X)  // t += ('kiwi','bery') (O)

 

2-1. 튜플 관련 함수

- enumerate(): 인덱스와 값 형태로 튜플 반환    <->  itmes(): 키와 값 반환

 ex) for index, value in enumerate(lst1) >> print(index, value) >> lst1의 인덱스와 값이 같이 출력 됨

 

 


 

 

3. 세트

1) 형식: set_name = {항목1, 항목2,...}

2) 공백 리스트 생성: set_name = set()

3) 중복된 항목 없음 !

4) 문자열을 받으면 이를 분해해서 세트를 생성함

    ex) set("abc") >> {"a","b","c"}

5) 세트는 항목의 순서가 없어서 인덱스로 요소에 접근 X (for문으로 접근 가능) 

 

3-1. 세트 관련 함수

all(), any(), enumerate(), len(), sorted() 등의 메소드 사용 가능

※ 세트는 항목의 순서가 없어서 .sort() 사용 불가능 !

1) remove(): 요소 삭제할 때(오류 생성)

2) discard(): 요소 삭제할 때(오류 무시)

3) clear(): 모든 요소 삭제

    ex) st.remove("value")  // st.discard("value") // st.clear()

 

4) add(): 항목 추가

5) update(): 여러 개의 항목 추가

    ex) st.add("value") // st.update(["val1","val2"])

 

3-2. 집합 연산

1) 부분집합: A<B // A.issubset(B) → A는 B의 하위집합

                     A>B // B.issuperset(A) → B는 A의 상위집합

2) 합집합: A | B // A.union(B)

3) 교집합: A & B | A.intersection(B)

3) 차집합: A - B | A.difference(B)

 


 

 

4. 딕셔너리

1) 형식: dic_name = { 키1 : 값1, 키2 : 값2,...}

2) 공백 딕셔너리 생성: dic_name = {}

                                     dic_name = dict()

3) 키값(key)으로 값을 찾을 수 있음  +  get() 함수 사용해 키를 찾을 수 있음(오류 방지)

    ex) dic["key1"] >> key1에 있는 value1가 출력 됨(만약 해당 키가 없으면 'KeyError'발생)

          dic.get("key1") >> key1에 해당하는 value를 출력하고 없을 시 None을 출력

          dic.get("key1","찾을 수 없음") >> 만약 key1이 없으면 "찾을 수 없음"을 출력

4) 항목 추가: dict["key"] = "value"

5) 보통 딕셔너리 명을 쓰면 키만 내보냄 //  값을 출력하려면 딕셔너리명[키]를 사용해야 함

 

 

4-1. 딕셔너리 관련 함수

1) update(): 다른 딕셔너리 전체를 현재 딕셔너리에 추가할 시 사용

    ex) dict.update({"key : value","key" : "value"})

2) pop(): 특정 항목 삭제 & 반환

    ex) dict.pop("key")

    ※ 만약 주어진 키 항목이 없으면 KeyError 발생 ! >> 방지 위해 if "key" in dict 로 먼저 검사 진행

3) items(): 키와 값 같이 반환

     ex) for key, value in dict.items() >> key엔 키, value엔 값들이 각각 들어감

4) keys(): 딕셔너리 안의 모든 키 반환

5) values(): 딕셔너리 안의 모든 값 반환

    ex) dict.keys() // dict.values()

 


 

 

5.문자열

1) 파이썬 문자열은 변경 불가능한 객체

    ex) word = "abcd"  // word[0] = 'A' >> Error

    ※ 문자열 안의 문자 변경이 필요한 경우 슬라이싱을 이용하기

        ex) word = "A" + word[1:] >> word = 'Abdc'

2) 문자열도 ==,!=,<,>로 비교 가능

 

5.1 문자열 내장 함수

1) chr(): 정수 → 문자

2) ord(): 문자 → 정수

    ※ ASCII코드 기준: a > A // a < z

3) len(): 길이 반환

4) str(): 문자열로 반환(1 → "1"

 

5.2 슬라이싱

문자열도 슬라이싱 가능

Monty Python

1) [6:10] >> 인덱스 6~9까지 출력

2) [:num] >> 양수(1): num-1까지 출력 // 음수(-1): num까지 제외해서 출력(ex. [:-2] >> Month Pyth)

3) [num:] >> 양수(1): num부터 출력 // 음수(-1): num까지만 선택해 출력(ex. [-2:] >> on)

4) [:] >> 전체 출력

5) [::-1] >> 거꾸로 출력

 

5.3 문자열 메소드

1) capitalize(): 첫 문자만 대문자로 변환

2) lower(): 모든 문자 소문자로 변환된 사본 반환

3) upper(): 모든 문자 대문자로 변환된 사본 반환

    ex) s.capitalize() / s.lower() / s.upper()

 

4) startswith('a'): 'a'로 시작되는 문자열이면 True 반환

5) endswith('a'): 'a'로 끝나는 문자열이면 True 반환

    ex) s.starswith('a') / s.endswith('a')

 

6) replace(): 한 문자열을 다른 문자열로 변환

    ex) s.replace('com', 'co.kr') >> s의 문자열에서 'com'을 'co.kr'로 변환

 

7) find(): 대상 문자열에서 지정 문자열을 찾아 인덱스 반환  <->index()

    ex) s.find('.') >> s 문자열에서 '.'의 인덱스를 반환

          s.find('.',start,stop) >> 시작 위치와 종료 위치를 지정해서 찾을 수 있음

 

8) rfind(): 오른쪽에서부터 지정 문자열 찾아 인덱스 반환

    ex) s.rfind('.') >> s 문자열에서 '.'의 인덱스를 반환

 

9) count(): 문자열 중 지정 문자열의 등장하는 횟수 반환

    ex) s.count('.') >> s 문자열에서 '.'의 횟수를 반환

          s.count ('.',start,stop) >> 시작 위치와 종료 위치를 지정해서 찾을 수 있음

 

10) isalpha(): 모든 문자가 알파벳이면 True

11) isdigit(): 모든 문자가 숫자면 True

12) islower(): 모든 알파벳 문자가 소문자면 True

13) isupper(): 모든 알파벳 문자가 대문자면 True

     ex) s.isalpha(), s.islower() ...

 

12) strip(): 문자열의 첫 부분과 끝부분에서 공백 혹은 지정문자 제거(문자 사이X)

     ex) s.strip(' ') >> 공백 제거 // s.strip("@") >> '@'제거

13) split(): 공백이나 지정문자를 기준으로 문자 분해

     ex) s = 'Hello World" / s.split(' ') >> ['Hello','World']

14) join(): 문자를 모아 문자열로 만듦

     ex) '-'.join(['010','1234','5678']) >> 010-1234-5678

 

15) sample(): 주어진 개수만큼의 글자를 문자열에서 임의로 선택

       ex) random.sample(s, 4) >> s문자열에서 4개를 임의로 선택

 


'파이썬' 카테고리의 다른 글

파이썬 객체와 클래스  (0) 2024.05.21
파이썬 리스트(List)  (0) 2024.05.19