🥰 점프 투 파이썬 내용 중에서 기억해야 할 것들 정리
파이썬에서 실수형(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 에서 인덱스로는 정수만 사용되므로 정수 나누기가 유용하다.
이스케이프 코드(\n) 를 쓸 수 있지만 읽기에 불편하고 줄이 길어진다
대신에, 작은 따옴표 3개(''') 또는 큰 따옴표 3개(""") 를 사용한다
# \n 사용
multiline = "Life is too short\nYou need python"
# 따옴표 사용
multiline = '''
Life is too short
You need python
'''
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'
<리스트 뒤집기>
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
튜플과 리스트의 차이
: 리스트는 [ ]로 둘러싸지만 튜플은 ( )로 둘러싼다
: 리스트는 값의 생성, 삭제, 수정이 가능하지만 튜플은 불가능하다
: 튜플을 나타낼 때 ( ) 괄호는 생략 가능하다
: 1개의 요소만을 가질 때는 요소 뒤에 콤마를 반드시 붙여야 한다
t =(1,)
값의 대응 관계를 나타낼 수 있는 자료형을 '연관배열(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'
# 비어있는 세트
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}
아래와 같이 사용된다
>>> a = [1, 2, 3, 4]
>>> while a:
... print(a.pop())
...
4
3
2
1
자료형의 값을 저장하는 공간, 변수
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가지가 있다
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
>>> from copy import copy
>>> b = copy(a)
>>> b is a
False