본문 바로가기
공부/Python

02 파이썬 프로그래밍의 기초, 자료형 (1)

by 자피킨치 2019. 4. 19.

Do it! 점프 투 파이썬 책으로 공부하며 기록한 내용입니다
마크다운 문서에 좀더 최적화된 git 에서 보는 것을 추천합니다
git에서 보기

02 파이썬 프로그래밍의 기초, 자료형 (1)

자료형 : 프로그래밍을 할 때 쓰이는 숫자 문자열 등 자료형태로 사용하는 모든 것

숫자형

  • 정수형

    >>> a = 123
    >>> b = -178
    >>> c = 0
  • 실수형

    >>> a = 1.2
    >>> b = -3.45
  • 컴퓨터식 지수 표현방식

    >>> a = 4.23E10
    >>> b = 4.24e-10
  • 8진수

    >>> a = 0o1777
  • 16진수

    >>> a = 0x8ff
    >>> b = 0xABC
  • 복소수

    >>> a = 1+2j
    >>> b = 3-4j
  • 복소수.real (실수부분)

    >>> a = 1+2j
    >>> a.real
    1.0
  • 복소수.imag (허수부분)

    >>> a = 1+2j
    >>> a.imag
    2.0
  • 복소수.conjugate() (켤레복소수)

    >>> a = 1+2j
    >>> a.conjugate()
    (1-2j)
  • abs(복소수) 절댓값

    >>> a = 1+2j
    >>> abs(a)
    2.2360679774997898

숫자형을 활용하기 위한 연산자

  • 사칙연산

    >>> a = 3
    >>> b = 4
    >>> a + b
    7
    >>> a * b
    12
    >>> a / b
    0.75
  • x의 y제곱을 나타내는 ** 연산자

    >>> a = 3
    >>> b = 4
    >>> a ** b
    81
  • 나눗셈 후 나머지를 반환하는 % 연산자

    >>> 7 % 3
    1
    >>> 3 % 7
    3
  • 나눗셈 후 소수점 아래자리를 버리는 // 연산자

    >>> 7 / 4
    1.75
    >>> 7 // 5
    1

문자열 자료형

문자열(String)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다.

>>> "Hello World"
>>> """Life is too short, You need python"""
>>> 'Python is fun'
>>> '''Life is too short, You need python'''
  • 여러 줄로 이루어진 문자열

    >>> multiline = "Life is too short, \n You need python"
    
    >>> multiline = '''Life is too short,
    you need python'''

문자열 연산하기

  • 문자열 더하기

    >>> head = "Python"
    >>> tail = " is fun!"
    >>> head + tail
    'Python is fun!'
  • 문자열 곱하기

    >>> a = "python"
    >>> a * 2
    'pythonpython'

문자열 인덱싱과 슬라이싱

>>> a = "Life is too short, You need python"

>>> a[0]
'L'

>>> a[12]
's'

>>> a[-2]
'o'

>>> a[0:4]
'Life'

>>> a[19:]
'You need python'
>>> a = "20010331Rainy"

>>> year = a[:4]
>>> day = a[4:-5]
>>> weather = a[8:]

>>> year
'2001'
>>> day
'0331'
>>> weather
'Rainy'

문자열 포맷 코드

%s : 문자열(String)

%c : 문자 1개(character)

%d : 정수(Integer)

%f : 부동 소수(floating-point)

%o : 8진수

%x : 16진수

%% : Literal(문자 '%' 자체)

문자열 포매팅

>>> "I eat %d apples" %3
'I eat 3 apples'

>>> "I eat %s apples." %five
'I eat five apples.'

>>> number = 3
>>> "I eat %d apples." %number
'I eat 3 apples.'

>>> number = 10
>>> day = 'three'
>>> "I eat %d apples. so I was sick for %s days." %(number, day)
'I eat 10 apples. so I was sick for three days.'

포맷 코드와 숫자 함께 사용하기

>>> "%-10s jane" %'hi'
'hi         jane'

>>> "%10.4f" %3.42134234
'    3.4213'

문자열 관련 함수들

  • 문자 수 세기

    >>> a = "hobby"
    >>> a.count('b')
    2
  • 위치(find)

    >>> a = "Python is best choice"
    
    >>> a.find('b')
    10 # 문자열에서 b가 처음 나온 위치
    
    >>> a.find('k')
    -1
  • 위치(index)

    >>> a = "Life is too short"
    
    >>> a.index('t')
    8
    
    >>> a.index('k')
    error
  • 문자열 삽입(join)

    >>> a = ","
    >>> a.join('abcd')
    'a,b,c,d'
  • 소문자 대문자 변환 (upper / lower)

    >>> a = "hi"
    >>> a.upper()
    'HI'
    
    >>> a = "HI"
    >>> a.lower()
    'hi'
  • 공백 지우기 (lstrip/ rstrip / strip)

    >>> a = " hi"
    >>> a.lstrip()
    'hi'
    
    >>> a = "hi "
    >>> a.rstrip()
    'hi'
    
    >>> a = " hi "
    >>> a.strip()
    'hi'
  • 문자열 바꾸기(replace)

    >>> a = "Life is too short"
    >>> a.replace("Life", "You leg")
    'You leg is too short'
  • 문자열 나누기(split)

    >>> a = "Life is too short"
    >>> a.split()
    ['Life', 'is', 'too', 'short'] # 공백을 기준으로 문자열을 나눔
    
    >>> a = "a:b:c:d"
    ['a', 'b', 'c', 'd'] # 기호를 기준으로 문자열을 나눔

리스트 자료형

리스트 생성

  • 여러가지 리스트의 생김새

    >>> a = []
    >>> b = [1, 2, 3]
    >>> c = ['Life', 'is', 'too', 'short']
    >>> d = [1, 2, 'Life', 'is']
    >>> e = [1, 2, ['Life', 'is']]

리스트의 인덱싱과 슬라이싱

  • 리스트의 인덱싱

    >>> a = [1, 2, 3]
    
    >>> a
    [1, 2, 3]
    
    >>> a[0]
    1
    
    >>> a[0] + a[2]
    4
    
    >>> a[-1]
    3
    >>> a = [1, 2, 3, ['a', 'b', 'c']]
    
    >>> a[0]
    1
    
    >>> a[-1]
    ['a', 'b', 'c']
    
    >>> a[3]
    ['a', 'b', 'c']
    
    >>> a[-1][0]
    'a'
    >>> a[-1][1]
    'b'
    >>> a[-1][2]
    'c'
  • 리스트의 슬라이싱

    >>> a = [1, 2, 3, 4, 5]
    >>> a[0:2]
    [1, 2]
    
    >>> a = [1, 2, 3, 4, 5]
    >>> b = a[:2] # 처음부터 a[1]까지
    >>> c = a[2:] # a[2]부터 마지막까지
    >>> b
    [1, 2]
    >>> c
    [3, 4, 5]

리스트 연산자

  • 리스트 더하기(+)

    >>> a = [1, 2, 3]
    >>> b = [4, 5, 6]
    
    >>> a + b
    [1, 2, 3, 4, 5, 6]
  • 리스트 반복하기(*)

    >>> a = [1, 2, 3]
    >>> a * 3
    [1, 2, 3, 1, 2, 3, 1, 2, 3]

리스트의 수정, 변경과 삭제

  • 리스트에서 하나의 값 수정하기

    >>> a = [1, 2, 3]
    >>> a[2] = 4
    >>> a
    [1, 2, 4]
  • 리스트에서 연속된 범위의 값 수정하기

    >>> a[1:2]
    [2]
    
    >>> a[1:2] = ['a', 'b', 'c']
    >>> a
    [1, 'a', 'b', 'c', 4]
  • [ ]사용해 리스트 요소 삭제하기

    >>> a[1:3] = []
    >>> a
    [1, 'c', 4]
  • del함수 사용해 리스트 요소 삭제하기

    >>> a
    [1, 'c', 4]
    
    >>> del a[1]
    >>> a
    [1,4]

리스트 관련 함수들

  • 리스트에 요소 추가(append)

    >>> a = [1, 2, 3]
    
    >>> a.append(4)
    >>> a
    [1, 2, 3, 4]
    
    >>> a.append([5, 6])
    >>> a
    [1, 2, 3, 4, [5, 6]]
  • 리스트 정렬(sort)

    >>> a = [1, 4, 3, 2]
    >>> a.sort()
    >>> a
    [1, 2, 3, 4]
    
    >>> a = ['a', 'c', 'b']
    >>> a.sort()
    >>> a
    ['a', 'b', 'c']
  • 리스트 뒤집기(reverse)

    >>> a = ['a', 'c', 'b']
    >>> a.reverse()
    >>> a
    ['b', 'c', 'a']
  • 위치 반환(index)

    >>> a = [1, 2, 3]
    
    >>> a.index(3)
    2
    
    >>> a.index(1)
    0
    
    >>> a.index(0)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ValueError: 0 is not in list        # 오류메시지
  • 리스트에 요소 삽입(insert)

    >>> a = [1, 2, 3]
    >>> a.insert(0, 4)
    [4, 1, 2, 3]
    
    >>> a.insert(3, 5)
    [4, 1, 2, 5, 3]
  • 리스트에 요소 제거(remove)

    >>> a = [1, 2, 3, 1, 2, 3]
    
    >>> a.remove(3)
    [1, 2, 1, 2, 3]
    
    >>> a.remove(3)
    [1, 2, 1, 2]
  • 리스트 요소 끄집어내기(pop)

    >>> a = [1, 2, 3]
    >>> a.pop()
    3
    >>> a
    [1, 2]
    
    >>> a = [1, 2, 3]
    >>> a.pop(1)
    2
    >>> a
    [1, 3]
  • 리스트에 포함된 요소 x의 개수 세기(count)

    >>> a = [1, 2, 3, 1]
    >>> a.count(1)
    2
  • 리스트 확장(extend)

    >>> a = [1, 2, 3]
    >>> a.extend([4, 5])
    >>> a
    [1, 2, 3, 4, 5]
    
    >>> b = [6, 7]
    >>> a.extend(b)        # a += b
    >>> a
    [1, 2, 3, 4, 5, 6, 7]

튜플 자료형

튜플과 리스트의 차이점

  • 리스트는 [과 ]으로 둘러싸지만 튜플은 (과 )으로 둘러싼다.
  • 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.

튜플의 생성

>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1, 2, 3)
>>> t4 = 1, 2, 3
>>> t5 = ('a', 'b', ('ab', 'cd'))
  • 튜플 요소값 삭제 시 오류

    >>> t1 = (1, 2, 'a', 'b')
    >>> del t1[0]        # 튜플 t1의 첫 번째 요소를 지우려고 시도
    
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item deletion        # 오류 발생
  • 튜플 요소값 변경 시 오류

    >>> t1 = (1, 2, 'a', 'b')
    >>> t1[0] = 'c'        # 튜플 t1의 첫 번째 요소값을 변경하려고 시도
    
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment        # 오류 발생

튜플의 인덱싱과 슬라이싱, 더하기(+)와 곱하기(*)

  • 인덱싱하기

    >>> t1 = (1, 2, 'a', 'b')
    >>> t1[0]
    1
    
    >>> t1[3]
    'b'
  • 슬라이싱하기

    >>> t1 = (1, 2, 'a', 'b')
    >>> t1[1:]
    (2, 'a', 'b')
  • 튜플 더하기

    >>> t2 = (3, 4)
    >>> t1 + t2
    (1, 2, 'a', 'b', 3, 4)
  • 튜플 곱하기

    >>> t2 * 3
    (3, 4, 3, 4, 3, 4)

댓글0