None, 수치형·문자열 자료의 특징, 비교를 위한 in / not in을 공부했다.
문자열에 인덱스가 있다는 점이 새로웠고 ; , 사용이 까다로울 것 같다.
===================== Python =====================
### 함수 만들기
# add 함수 만들기
def add(a, b):
return a + b
# 객체에 함수 할당
f = add # 여기서 f = add()로 할 수 없다. () 안에는 매개변수가 들어가야하기 때문이다.
f(1,2) # 3
# 람다에 대한 간단한 내용
f = lambda x, y: x + y # 위의 f와 동일
f(1,2) # 3
### 줄을 바꿔서 표현
a = 1
b = 2
a + \
b # \를 이용해서 다음 라인으로 넘길 수 있다. 4칸 스페이스. 결과는 3
### 연속 할당
a, b = 3, 4 # a = 3, b = 4
a=b=c=0 # 모두 0
a = 1 ; b = 2 # a = 1, b = 2인데 ; 사용은 헷갈릴수도 있으니 사용하는 것을 지양하자.
# 객체 스왑기능
a, b = b, a # a와 b가 바뀐다. 따라서 a = 2, b = 1
### 리스트 내용 조금
a = [1,2,3]
b = [1,2,a] # [1, 2, [1, 2, 3]] 리스트 안에 리스트 할당 가능
a[0] # 여기서 [0]은 인덱스. 따라서 결과는 1
a[0] = 100 # a = [100,2,3] 새로운 인덱스 0값을 넣어줌.
### input을 이용하여 값 받기. input을 사용하면 무조건 String으로 저장된다.
age = input('나이') # 들어온 값이 String. int로 받고 싶으면 조건을 추가해야한다.
age = int(input('나이')) # 이렇게 해야지 들어온 값을 String이 아닌 int가 된다. 다른 형태도 가능
age = float(input('나이')) # 이건 float
### ; , 사용
print(4+5) ; print(4-2) # 줄을 끝을 선언하는 세미콜론;
'''
9
2
'''
print(4+5), print(4-2) # 얘는 print(4+5), print(4-2), 이걸로 인식되어서 (None, None)이 출력되는 것이다.
'''
9
2
(None, None)
'''
print('빼기 연산값:', 4-2) # print()에서 String 연결은 +가 아니라 , 로 연결해준다. 결과는 빼기 연산값: 2
### 인덱스가 존재하는가?
a = 123456789
a[0] # 에러. int라서 인덱스가 없다.
a = 'abcdefg'
a[0] # 'a'. String이라서 인덱스가 존재.
### 자료형의 비교
a = 10
b = [1,2,3]
type(a) == type(9) # int로 동일하니 True
type(b) == type([]) # list로 동일하니 True
type(b[0]) == type(7) # int로 동일하니 True
### None 객체. R에서 NA.
type(None) # <class 'NoneType'>
### 값의 변경
a = {'1':'3번', '2':'2번', '3':'3번'} # 사전타입
a['1'] = '1번' # 키를 이용해 접근하여 값을 변경
a # {'1': '1번', '3': '3번', '2': '2번'}. 사전타입의 키는 변경 불가 값은 변경 가능.
s = 'abcdefg' # 문자열 타입. 위에서 이것도 인덱스가 있다는 것을 알았다.
s[0] = 'k' # 얘는 오류가 난다. 튜플처럼 고정된 값이라고 생각하면 쉬울 듯하다.
# 위의 에러메시지. TypeError: 'str' object does not support item assignment
'''
인덱스로 접근이 안 되는 것 -> 수치형, 사전
-> 인덱스를 통한 수정권은 없다.
인덱스로 접근이 가능한 것 -> 리스트, 튜플, 문자열
-> 인덱스를 이용하거나 슬라이싱을 이용하면 수정이 가능하다.
'''
### 수치형 자료
import sys
sys.maxsize # 9223372036854775807. 시스템이 사용할 수 있는 최대값이다.
# 정수형 표현
a = 10 # 십진수
a = 0b1010 # 이진수. 결과는 10
a = 0o12 # 팔진수. 결과는 10
a = 0xa # 16진수. 결과는 10
# 실수형 표현
a = 12e2 # en는 10^(n)을 의미한다.
a # type float : 1200.0
a = 1.0 # 소숫점을 이용하여 숫자를 표현하면 float가 된다.
type(a) # <class 'float'>
#복소수형. 허수부는 j로 표현된다.
a = 10 + 10j
b = 16 + 2j
a + b # (26+12j)
### 문자열(String) 자료
# '', ' '차이
bool('') # False
bool(' ') # True
# 역슬래시 기호 적용
#'Don't work' # 어퍼스트로피(')를 이용해서 오류가 났다.
'Don\' work' # \를 써야지 오류가 안 난다.
'abcdefg\
hijklmnop' # 이런식으로 코드에 엔터를 표현할 수도 있다. 실제로 줄바꿈은 안 된다. 줄바꿈은 이스케이프문자인 \n을 이용.
# 결과는 위의 a + \ 와 같음. 'abcdefghijklmnop'
# 길이비교
a = '123'
len(a) # 3
b = '가나다'
len(b) # 똑같이 3
# String을 비교하는 in, not in
'abc' in 'abc def' # 뒤의 'abc def'에 'abc'가 있는지 물어보는 boolean. 결과는 True
'abc ' in 'abc def' # 공백도 읽는다. 즉 공백이 두 칸이면 False가 나온다. 결과는 False
'abc ' in 'abc def' # False
'abc' not in 'abc def' # 위와는 반대로 없냐는 질문이다. 결과는 False
# 공백 문자열의 확인
a = ' abc'
a[0] # ' '이 나온다. 공백도 String타입
a[-1] # 뒤에서부터 센다. 이건 초기 인덱싱이 -1. 결과는 c
===================== Python =====================
'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글
[R] R 5일차 (0) | 2018.05.16 |
---|---|
[Python] Python 4일차 - 1 (0) | 2018.05.15 |
[R] R 3일차 (0) | 2018.05.14 |
[Python] Python 2일차 (0) | 2018.05.11 |
[R] R 2일차 (0) | 2018.05.11 |