4장 데이터구조

Han Hanju·2022년 3월 14일
0
post-thumbnail

4.1 None- 값이 존재하지 않음을 표현

  • 존재하지 않음을 표시
  • java, c 의 null과 같음

1. 조건식에서의 None이용

  • None은 거짓에 해당
  • 언제 어디서 참조되더라도 동일한 하나의 객체를 반환하는 싱글톤
  • is, is not을 사용하여 비교

4.2 논리값 - 참/거짓을 다룸

1. bool 타임 - 논리값을 다루는 타입

  • True, False의 두가지 내장 상수만 존재
  • 모든객체에 대해 논리값 판정가능

2. 불연산

1) x or y - x가 참이면 x, 그렇지 않으면 y를 반환

2) x and y - x가 참이면 y, 그렇지 않으면 x를 반환

3) not x - x가 참이면 False, 그렇지 않으면 True를 반환

  • 반환값은 True/False
  • or/and보다 우선도가 높다.

4.3 숫자값

  • 내장 숫잣값 타입
    • 정수: int
    • 부동소수점수 : float
    • 복소수: compex

1. 숫자값끼리의 연산

  • 숫잣값 타입은 변경할 수 없는 타입이므로 연산 결과는 항상 새로운 객체로 반환
  • 그 외 연산
  • 기타 수학함수는 math모듈을 사용

2. 숫잣값을 다루는 내장타입

  • 큰수표현시 언더스코어로 보기 쉽게 쓸 수 있다.
  • 언더스코어는 숫자에 영향을 주지 않는다.

1) int 타입 - 정수를 다루는 타입

  • 정수는 크기제한이 없다.
  • 메모리 허용한도내 큰값을 다룰 수 있다.

2) float 타입 - 부동소수점을 다루는 타입

  • 1e-1 = 0.1, 1e+2 = 100

3) complex 타입 - 복소수를 다루는 타입

  • 실수부는 .real, 허수부는 .imag로 얻을 수 있다.

3. 조건식에 숫자값 이용

1) float 타입을 다룰 때 주의점

  • 0은 거짓, 이외는 참
  • float타입 연산 주의
  • 계산기 하드웨어가 0.3을 정확하게 표현 못하는 경우 있음

4.4 문자열

1. str 타입 - 문자열을 다루는 타입

  • 작은따옴표나 큰따옴표로 감싸서 정의
  • \n을 이용하여 줄바꿈
  • ''', """ 을 이용하여 줄바꿈 포함한 문자열 정의

2. 문자열 연산

    • 를 이용하여 문자열 결합
    • 를 이용하여 반복

3. for문에서의 문자열의 동작

  • for를 사용하여 한문자씩 반환 (이터러블 객체)

4. 조건식에서의 문자열 이용

  • 빈문자열이면 거짓, 그외에는 참
  • in을 이용하여 특정 문자열 포함여부 판정

5. 문자열 안에서의 변수 이용

1) f-string - 식을 삽입할 수 있는 문자열 리터럴

  • 3.6에 추가됨
  • 문자열 맨앞에 f를 붙여정의
  • formatted string literals

2) format() - 인수에 전달한 변수로 문자열을 치환

  • 2.6부터 사용 가능
  • str.format() 메서드에 인수로 전달한 값으로 치환
  • {}에는 {0} or {key}와같이 인수전달

3) % 연산자 - 가장 오래된 문자열 포맷

  • 사용안함
  • 문자열: %s, 숫자값: %d

6. str 타입과 매우 비슷한 bytes 타입

  • 컴퓨터가 다루기 쉬움
  • str과 서로 변환가능

1) str,encode()와 bytes.decode()를 이용한 상호 변환

  • 유니코드 문자에는 문자별로 코드포인트라는 식별자가 있음
    • ex) 'A' = U+0041
  • 인코드 : 바이트코드로 변환
  • 디코드 : 바이트코드를 되돌림

2) 파이썬 2계열과 파이썬 3계열에서의 문자열 차이

  • 파이썬3: 유니코드 전면채용

4.5 배열 - 엘리먼트를 1열로 나열해서 다룸

1. list 타입 - 변경할 수 있는 배열을 다루는 타입

  • list()를 사용해 새로운 리스트를 만들 수 있다.

1) 엘리먼트 추가와 삭제

  • 추가: list.append() / + 연산자 사용
  • 삭제: list.pop() / del 사용
    • del: 객체삭제

2) 인덱스를 이용한 엘리먼트로의 접근

  • 변수명[인덱스]로 접근
  • 음수를 넣으면 맨뒤에서 왼쪽으로 수를 센다
  • 엘리먼트 수를 넘으면 indexError발생

3) 슬라이스를 이용한 리스트 추출

  • 변수명[시작:종료인덱스]
  • 종료인덱스 바로 앞까지 포함
  • 슬라이스로 선택한부분 치환

2. tuple 타입 - 변경할 수 없는 배열을 다루는 타입

  • tuple()을 사용하여 이터러블한 객체로부터 튜플생성가능

1) 튜플 작성 시 주의점

  • 빈튜플 만드는법: tuple() / ()
  • 콤마를 붙여 엘리먼트가 하나인 튜플 생성가능

2) 인덱스를 이용한 엘리먼트로의 접근

3) 슬라이스를 이용한 튜플 추출

4) for 문에서의 배열의 동작

3. 조건식에서 이용되는 배열의 특성

  • 엘리먼트가 없으면 거짓, 하나라도 존재하면 참
  • in연산자로 객체가 포함되어있는지 확인

4. 튜플과 리스트의 이용구분

  • 주로 변경되지 않는 설정값 지정에 튜플이 자주 쓰임

4.6 딕셔너리 - 키와 값의 세트를 다룸

  • 키와 값을 세트로 다루는 데이터타입
  • 해시, 맵, 연상배열 등으로 불림
  • 키를 인덱스로 이용 (빠름)

1. dict 타입 - 딕셔너리를 다루는 타입

  • {}나 dict()를 사용

2. 엘리먼트 추가와 삭제

  • 삽입: 새로운 키를 지정해 대입
  • 삭제 : dict.pop() / del

3. 키를 이용한 엘리먼트로의 접근

  • 변수명[키]로 참조
  • 키가 존재하지 않는경우 keyError
    • dict.get()으로 방지가능

4. 키로 이용할 수 있는 객체의 조건

  • 문자열, 숫자값, 튜플 등 변경 할 수 없는 객체만 이용
  • 리스트, 딕셔너리 불가능

5. for 문에서의 딕셔너리의 동작

  • 키를 하나씩 추출
  • 목록만 필요할경어 dict.values()이용

6. 조건식에서 이용할 수 있는 딕셔너리의 특성

  • 엘리먼트가 없으면 거짓, 하나라도 있으면 참

4.7 집합 - 유일한 엘리먼트의 집합을 다룸

1. set 타입 - 변경할 수 있는 집합을 다루는 타입

  • 변경할 수 있는 객체
  • 유일한 값만 있음
  • set()으로 객체 생성

1) 엘리먼트 추가와 삭제

  • 추가: set.add()
  • 제거: set.remove('item'), set.pop()
  • 순서를 유지하지 않으므로 set.pop() 사용시 제거되는 엘리먼트 확정 불가

2. frozenset 타입 - 변경할 수 없는 집합을 다루는 타입

  • set 타입과 같으나 변경할 수 없는타입
  • frozenset()

3. 집합 연산 - 합집합, 교집합, 차집합, 대칭차집합

  • 순서가 존재하지 않는다.

4. for 문에서의 집합의 동작

  • set, frozenset, 집합은 순서가 존재하지 않는다.

5. 조건식에서 이용할 수 있는 집합의 특성

  • list와 같음
  • 비어있으면 거짓
  • in 연산자로 포함여부 확인

4.8 컴프리헨션 - 효율적인 시퀀스 생성

1. 리스트 컴프리헨션 - 효율적인 리스트 생성

  • 변수의 스코프는 컴프리헨션안으로 제한된다.

1) 중첩되 리스트 컴프리헨션

  • 얕은 중첩일때 가독성있게 사용가능

2) if 문이 있는 컴프리헨션

2. 기타 컴프리헨션

  • [] 를 {}로바꾸면 set타입 컴프리헨션
  • () 로 바꾸면 제너레이터

4.9 그 외 타입을 나타내는 개념

1. 가변객체 - 정의 후 값을 변경할 수 있는 객체

  • mutable object
  • list, dict, set etc

2. 불변객체 - 정의 후 값을 변경할 수 없는 객체

  • immutable object
  • int, float, str, tuple, frozenset etc

3. 컨테이너 객체 - 다른 객체에 대한 참조를 가진 객체

  • list, dic, 집합 etc
  • 다른객체에 대한 참조를 가진 객체
  • for, len, in 등 사용가능
  • sequence object
    • index를 이용해 엘리먼트 접근가능 객체
    • str, list, tuple
  • mapping object
    • key를 통해 접근
    • di

4. 이터러블 객체 - for문에서 이용할 수 있는 객체

5. 호출 가능 객체 - ()를 붙여 호출할 수 있는 객체

  • callable object
profile
Data Analytics Engineer

0개의 댓글