본문 바로가기

개발/Python

[Python] 기초 학습 - 자료형(1회차)

숫자

  • 정수: 따로 크기 제한은 없음. javascript처럼 bigint로 변경할 필요 없음.
  • 실수
  • 8진수: 0o32 | 0O32
  • 16진수: 0x2A

사칙 연산

  • +, +=
  • -, -=
  • *, *=
  • /, /=
  • **, **=: 제곱
  • %, %=: 나머지
  • //, //=: 몫

문자열

  • "str" | 'str'
  • """str""" | '''str''': 줄 바꿈 문자열이 없어도 줄 바꿈을 사용할 수 있다.
  • 이스케이프 코드: \n, \t 등 문자열 내부에서 사용하는 코드

문자열 연산

  • +: 합치기
  • *: 반복
  • len(str): str의 길이. 공백 문자 포함.
  • str[index]: 문자열 인덱싱
  • str[start_index:end_index]: 문자열 슬라이싱. end_index 미포함. start_index가 생략된 경우 0부터 시작, end_index가 생략된 경우 문자열의 끝까지

문자열 포매팅

'%[str_format_code]' %(data)

  • %d: 문자열 내부에 정수 대입
  • %[number]f: 문자열 내부에 부동소수 대입. number를 통해 소수점 자릿수 표기 가능.
  • %c: 문자열 내부에 문자 1개 대입
  • %[number]s: 문자열 내부에 문자열 대입. number만큼 문자열의 길이 유지. number가 음수일 경우 왼쪽 정렬.
  • %o: 문자열 내부에 8진수 대입
  • %x: 문자열 내부에 16진수 대입
  • %% 문자열 내부에 %문자 대입. '2%'에서 2를 입력받고 싶은 경우 단순하게 '%d%'라고 사용하면 에러가 발생한다. 따라서 '%d%%'라고 해야 원하는 결과를 얻을 수 있다.

% 방식 말고 format 함수를 사용할 수도 있다. 이 때는 기본적으로 index를 기반으로 들어가면 index 대신 name을 사용할 수 있다. 혼용하는 것도 가능하다.

ex) 'string {0}, {day}'.format(10, day=12)

표현식을 사용하면 %[number]s와 비슷하게 정렬을 사용할 수 있고, 공백 채우기, 소수점 표현하기 등도 가능하다.

 

f 문자열 포매팅(버전 3.6 이상)

문자열의 앞에 f를 사용하고 내부에서 {}를 통해 데이터를 삽입할 수 있다. 마치 javascript의 `${}`와 비슷하다.

ex) data = 10; f'{data}'

정렬과 공백 채우기는 format과 동일한 방식으로 진행 가능하다.

문자열 함수

  • count(target): 문자열 내부에 target의 개수
  • find(target): 문자열 내부에 처음 등장하는 target index. 없으면 -1
  • index(target): 문자열 내부에 처음 등장하는 target index. 없으면 에러 발생
  • str.join(target): target 내부 각 문자 사이에 str 삽입
  • upper(), lower(): 대문자 소문자 변환
  • lstrip(), rstrip(), strip(): 공백 지우기
  • replace(target, str): 문자열 내부의 target을 str로 변환
  • split([seperator]): 문자열 내부의 separator 기준으로 리스트에 분할
  • isalpha(), isdigit(): 문자열 구성 확인하기
  • startswith(target), endswith(target): 문자열이 target으로 시작하거나 끝나는지 확인

리스트

[]와 , 또는 list()로 생성 ex) [data, data, data]

내부의 data는 모든 자료형이 가능.

 

indexing과 slicing 가능.

indexing의 경우 음수도 가능하다. 이 경우 뒤에서부터 -1, -2,...으로 진행된다.

리스트 연산

  • +: 합치기
  • *: 내부 요소들 전체 반복
  • len(list): list 길
  • del list[idx]: 리스트 idx 번째 요소 삭제

리스트 함수

  • append(data):  요소 추가
  • sort(): 순서 정렬. 기본은 사전순 정렬
  • reverse(): 순서 뒤집기
  • index(target): 첫 번째 target의 인덱스 반환. 없으면 오류
  • insert(index, data): 리스트의 index 위치에 data 삽입
  • remove(target): 리스트의 첫 번째 target을 제거. 없으면 오류
  • pop(): 맨 마지막 요소 반환 및 삭제
  • count(target): target 요소 개수 반환
  • extend(list): +와 같은 기능

튜플

()와 , 또는 tuple()로 생성. ex) (data,data,data)

하나의 요소만 가지는 경우에는 마지막에 ,로 끝나야 한다. ex) (data,)

리스트와의 차이점은 tuple은 readonly라는 점이다. 또한 중괄호가 생략될 수 있다.

튜플 연산

  • +: 합치기
  • *: 내부 요소들 전체 반복
  • len(tuple): tuple 길이

딕셔너리

{}와 key, value 쌍을 이용해서 생성. ex) { key:value, key:value }

3.7버전 이상에서는 딕셔너리의 순서가 보장된다.

key에는 변하지 않는 문자, 숫자, 튜플이 가능하고, value에는 모든 자료형이 가능하다.

접근의 경우 dic[key]만 가능하고 javascript와 다르게 dic.key는 불가능하다. 요소가 없는 경우 에러가 발생한다.

딕셔너리 연산

  • +: 합치기
  • *: 내부 요소들 전체 반복
  • len(tuple): tuple 길이
  • del dic[key]: key 요소 삭제

딕셔너리 함수

  • keys(): 3.0버전 이상 dict_keys 객체 반환하기 때문에 list로 사용하려면 형변환이 필요. 아래 버전은 list 반환.
  • values() : 3.0버전 이상 dict_values 객체 반환하기 때문에 list로 사용하려면 형변환이 필요.
  • items(): : 3.0버전 이상 dict_items 객체 반환하기 때문에 list로 사용하려면 형변환이 필요.
  • clear(): 모든 요소 삭제
  • get(key, [default]): key의 value 반환. 없는 경우 None 반환, default 설정 시 default 반환
  • key in dictionary: key가 dictionary 안에 있는지 확인. boolean 반환
  • pop(key, [default]): key의 value 반환 후 삭제. 없는 경우 에러, default 설정 시 default 반환

집합

{}와 , 또는 set([list|string])으로 생성. ex) {1,2,3}

중복을 허용하지 않고 순서가 없다. 순서가 없기 때문에 인덱싱이 불가능하다.

집합 연산

  • &: 교집합
  • |: 합집합
  • -: 차집합

집합 함수

  • intersection(set): 집합과 set의 교집합
  • union(set): 집합과 set의 합집합
  • difference(set): 집합과 set의 차집합
  • add(data): 하나의 요소 추가
  • update(list): 여러 요소 추가
  • remove(target): target 요소 제거. 없으면 오류
  • discard(target): target 요소 제거. 없어도 오류 없음
  • clear(): 모든 요소 제거

True와 False 중 하나의 값만 가지는 것.

 

falsy

  • 빈 문자열, 리스트, 튜플, 딕셔너리
  • 0
  • None

불 연산

  • and
  • or
  • not

불 함수

  • bool(data): data를 불 타입으로 형변환 할 수 있음

 

참고

https://wikidocs.net/book/1