점프 투 파이썬 정리 1. 자료형

lilyoh·2020년 7월 14일
0
post-custom-banner

🥰 점프 투 파이썬 내용 중에서 기억해야 할 것들 정리

1. 숫자형

실수

파이썬에서 실수형(floating-point) 은 소수점이 포함된 숫자를 말한다

# 일반적인 실수 표현 방식
a = 1.2
a = 3.45

# 컴퓨터식 지수 표현 방식
a = 4.24E10
a = 4.24e-10

e 는 대문자, 소문자 모두 사용 가능
4.24E10 은 4.24 x 10의 10제곱, 4.24e-10 은 4.24 x 10의 -10 제곱을 의미

나누기 연산자

나눗셈 후 나머지를 반환 : %
나눗셈 한 결과 : /
나눗셈 후 몫을 반환 : //

+) 추가 내용
//는 '정수 나누기'라고도 한다. slicing 에서 인덱스로는 정수만 사용되므로 정수 나누기가 유용하다.

2. 문자열

여러 줄 입력하기

이스케이프 코드(\n) 를 쓸 수 있지만 읽기에 불편하고 줄이 길어진다
대신에, 작은 따옴표 3개(''') 또는 큰 따옴표 3개(""") 를 사용한다

# \n 사용
multiline = "Life is too short\nYou need python"

# 따옴표 사용
multiline = '''
Life is too short
You need python
'''

문자열 = immutable

pithon 문자열을 python 으로 수정해보자

a = 'pithon'
a[1]
'i'
a[1] = 'y'

위의 코드는 잘못됐음! 문자열은 immutable data 이기 때문이다
아래와 같이 인덱싱으로 수정 가능

a = 'pithon'
a[:1]
'p'
a[2:]
'thon'
a[:1] + 'y' + a[2:]
'python'

문자열 포매팅

문자열 포매팅은 3가지 방식이 있다
1. % 기호 사용
2. format 함수 사용 (literal string interpolation)
3. f 문자열 포매팅 (파이썬 3.6 부터 적용)(짱짱)
: f 문자열 포매팅은 표현식을 지원한다
: 표현식이란 문자열 안에서 변수와 +, - 같은 수식을 함께 사용하는 것을 말한다

age = 30
f'나는 내년이면 {age+1}살이 된다.'

# 결과: '나는 내년이면 31살이 된다'

! 참고
%d 와 % 를 같이 쓸 때
%% 이렇게 써줘야 %가 출력된다

문자열 관련 함수

<위치 알려주기>
find 와 index 의 차이
: 찾는 문자나 문자열이 없을 때 find 는 -1 반환, index 는 오류 메세지

#find()
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1

#index
>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found

<문자열 삽입>

>>> ",".join('abcd')
'a,b,c,d'

<문자열 바꾸기>

>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'

3. 리스트

리스트 관련 함수

<리스트 뒤집기>

>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']

4. 튜플

튜플과 리스트의 차이
: 리스트는 [ ]로 둘러싸지만 튜플은 ( )로 둘러싼다
: 리스트는 값의 생성, 삭제, 수정이 가능하지만 튜플은 불가능하다

: 튜플을 나타낼 때 ( ) 괄호는 생략 가능하다
: 1개의 요소만을 가질 때는 요소 뒤에 콤마를 반드시 붙여야 한다

t =(1,)

5. 딕셔너리

값의 대응 관계를 나타낼 수 있는 자료형을 '연관배열(associative array)' 또는 '해시(hash)' 라고 하는데 파이썬에서는 이러한 자료형을 '딕셔너리'라고 한다

딕셔너리는 key 를 통해 value 를 얻는다
사전처럼 필요한 정보가 있는 곳만 확인하는 것!
리스트와 튜플은 순차적으로 요소값을 구한다

딕셔너리의 키값으로는 변하지 않는 값만 올 수 있다
리스트는 키값이 안되고, 튜플은 된다
딕셔너리도 키값이 안된다
value 값은 모든 자료형이 가능하다

딕셔너리 관련 함수

<key 리스트 만들기>

>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])

dict_keys, dict_values, dict_items 등은 리스트로 변환하지 않더라도 반복구문을 사용할 수 있지만 리스트 고유의 append, insert, pop, remove, sort 함수를 사용할 수는 없다 리스트로 만들어 쓰려면 list(dict_keys) 이렇게 리스트로 만들어 사용하면 됨

<key, value 쌍 얻기>

>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

<key 로 value 얻기>

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'

a.get('name') 과 a['name'] 은 결과값이 같다
차이점: 존재하지 않는 키로 값을 가져오려는 경우,
a.get('name') 은 None 을 반환하고
a['name'] 은 오류를 발생시킨다

딕셔너리 찾으려는 key 값이 없을 경우 미리 정해둔 디폴트 값을 대신 가져오게 하고 싶을 때는 get(x, '디폴트 값') 을 사용한다

>>> a.get('foo', 'bar')
'bar'

6. 집합(set)

집합 자료형 만들기

# 비어있는 세트
s = set()

# 리스트 넣기
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}

# 문자열 넣기
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}

집합 자료형의 특징

  • 중복을 허용하지 않는다 (중복 거르기 위한 필터 역할로 종종 사용)
  • 순서가 없다 (-> 인덱싱 지원 안함 -> 인덱싱 사용 위해서는 리스트나 튜플로 변환해야 한다)

교집합, 합집합, 차집합 구하기

>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])

# 교집합
>>> s1 & s2
{4, 5, 6}

>>> s1.intersection(s2)
{4, 5, 6}

# 합집합
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}

>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

# 차집합
>>> s1 - s2
{1, 2, 3}

>>> s1.difference(s2)
{1, 2, 3}

7. 불 자료형

아래와 같이 사용된다

>>> a = [1, 2, 3, 4]
>>> while a:
...     print(a.pop())
...
4
3
2
1

8. 변수

자료형의 값을 저장하는 공간, 변수

a = [1, 2, 3]
>>> id(a)
4303029896

a = [1, 2, 3] 이라고 하면
[1, 2, 3] 값을 가지는 리스트 자료형(객체) 이 자동으로 메모리에 생성되고
변수 a 는 [1, 2, 3] 리스트가 저장된 메모리의 주소를 가리키게 된다

리스트 복사

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

리스트 [1, 2, 3] 을 참조하는 변수가 a, b 로 1개 늘어났다
b 변수를 생성할 때, a 변수의 값을 가져오면서 a 와는 다른 주소를 가지도록 하는 방법은 2가지가 있다

  1. [:] 이용
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
  1. copy 모듈 이용
>>> from copy import copy
>>> b = copy(a)

>>> b is a
False
post-custom-banner

0개의 댓글