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

+ Recent posts