- Ctrl + c + k : 그룹 주석처리
- Ctrl + c + u : 그룹 주석 해제
input()
- 키보드 입력을 받을 수 있다.
- 기본적으로 문자열 입력이다.
- 그래서 10+50 이 1050으로 나온다.
- 정수로 만들어 준다.
- 함수처럼 보이지만 실제로는 클래스이다.
- 참고로
type()
도 클래스 이다.
- int가 아니라 float로 하면 실수형으로 들어간다.
- 주피터 노트북에서 객체에 대한 정보 확인
- fn이 무엇을 가지고 있는지 확인
- 함수처럼 호출해서 사용할 수 있고,
- 또, 사용자 정의 변수처럼도 사용할 수 있다.
- 객체지향- 보통 JAVA와 같은 언어에서는 첫글자를 대문자로 사용한다.
- 값 (데이터)를 담는 그릇
- 데이터 종류에 따라 데이터 타입이 결정된다.
- 데이터를 담은 변수의 데이터 타입도 그때 결정된다.
- compliation-time VS run-time
정적 타입 언어 VS 동적 타입 언어
- 동적 타입 언어
- 프로그램 실행 중에 변수의 데이터 타입이 변경 가능
- 변수가 특정 데이터 타입으로 결정되지 않음
- 정적 타입 언어
- 변수에 데이터 타입을 미리 선언
- 그 변수는 해당 데이터 타입만 저장 가능
- 파이썬
- 강타입 언어 & 동적타입 언어
- 올바른 데이터를 사용하지 않으면 TypeError, ValueError
- 변수는 선언 없이 바로 생성, 대신 초기화 필요
- (Assignment operator) : 오른쪽 -> 왼쪽으로 값을 대입한다.
- JAVA의 경우 C = 100, B = 100, A = 100으로 저장되지만,
- Python의 경우 C = 100, B = C의주소값, A=B의주소값이 들어간다.
id()
- 파이썬 Bool 리터럴 : True, False (첫글자 대문자에 유의)
- 단일 값 : 숫자형(int, float, complex), 불형(bool), None 등
- 다중 값, 여러가지 값을 가지는 형
- 시퀀스: 데이터가 순서대로 저장 (0번부터 시작)
- immutable(불변) : 값 변경 불가 - 문자열, 튜플
- mutable(가변) : 변경 가능 - 리스트
- 매핑
- 사전
- 순서가 없음
- 원소가 (키, 값)쌍으로 구성, 아이템이라고도 함
- 키는 해시 가능한 데이터 타입이어야 함(보통 immutable)
- 집합
- 순서없음, 중복 불허요
- 집합 연산자 (합집합, 교집합, 차집합)이 사용가능하다.
- 배열(array)
- 기본제공하지 않는다.
- 모든 원소가 같은 타입
- 리스트(list)
- 리스트 리터럴 : 대괄호 [] 사용
- 리스트 함수 (클래스): list()
- 인덱싱(indexing): 색인
- 컬렉션 형에서 원소(아이템)에 접근하는 것.
- [] : 대괄호 사용
- 시퀀스 형은 반드시 0에서 시작, 정수형
- 사전은 키로 접근
- 시퀀스 형의 원소 토막을 반환
- 슬라이싱의 결과는 해당 시퀀스 형
- 인덱싱의 결과의 타입은 원소의 데이터 타입
:
(콜론)을 사용하여 시작위치, 종료위치를 구분, 필요하다면 스텝 간격도 기정 가능
- 시작위치 생략 -> 처음부터
- 종료위치 생략 -> 마지막 원소까지 포함해서
- 종료위치는 포함되지 않음
마지막원소 포함X- 슬라이싱의 마지막 원소가 포함되지 않는 이유를 짐작
- test-list[2:4] => 결과의 원소 개수: 4-2 = 2개
- 시퀀스를 분리할 때 편리
- 위 이미지처럼 분리할떄 마지막 원소가 포함이라면, weather = data[sep+1:]이었을 것이다.
- 위에서 b_list안의 원소로 들어있는 리스트는 b_list의 원소 수에서 1개로만 인식된다.
- 중첩된 리스트에서는 아래 대괄호를 2개 이상 주어서 접근할 수 있다.
- 위와같이 같은 데이터타입만 담을 수 있는
배열
과 달리리스트
는 다양한 데이터타입을 담을 수 있다.
- 표현식 (expression, expr)
- 평가 (evaluate)한 결과가 값이 되는 것
- 리스트를 복사해본다.
- b_list를 복사했는데, a_list가 변경되었다.
- 이것은 b_list원소를 다 복사하는게 아니라, 주소만 가져왔기 때문이다.
- 튜플(tuple)
- 튜플 리터럴 : 소괄호() 사용
- 튜플 함수(클래스) : tuple()
- 리스트와 다른 점 하나 : 원소 변경 불가능 듯, immutable 시퀀스이다.
- 여러가지 방법으로 tuple을 생성할 수 있고, 또 괄호 없이도 튜플이 생긴다.
- 튜플은 원소의 변경이 안된다. 1번째 줄 print는 출력되고, 2번째 줄 부터 에러로 동작하지 않은 것을 볼 수 잇다.
- 튜플 내부의 리스트는 변경이 되었다.
- 튜플 내부 리스트내부의 원소는 변경이 되지만, 리스트 자체는 변경되지 않을 것이다.
- 원소 한개짜리 튜플 만들기
- 원소 한개짜리 튜플을 만드려면 뒤에
,
를 넣어야 한다.
- 사전 리터럴: 중괄호{} 사용
- 아이템(원소) 키, 값 쌍은 콜론으로 구분
- 순서없는 자료형
- 정의되지 않은 키는, 에러가 출력된다.
- 입력이 중복되면 나중에 정의된 키가 사전에 정의되게 된다.
- 키는 immutable해야 한다.
- 사전에서 제거할면 del함수를 사용하면 된다.
- del함수는 그냥 변수도 삭제하는 함수이다.
- 리스트의 원소도 삭제된다.
- 사용하지 않지만 메모리를 점유하고 있는 변수 같은 Garbage를 모아서 처리하는 기능, 메모리 공간확보
- del()을 사용해서, 리스트의[i]번째 원소 제거 가능
- remove를 사용해서, 리스트의 (value)값 삭제
- pop은 원하는 위치의 원소 삭제가 가능하며, 기본값은 제일 뒤의 값을 제거한다.
- 제일 뒤의 값을 제거할 때, 제거 동작중 가장 빠르다.
- 튜플은 원소 삭제가 안된다.
- 집합을 정의하고, 원소 추가해보았다. set는 중복을 허용하지 않는다는 큰 장점이 있다.
- list와 tuple과 비교하여 중복을 제거했기 때문에 짧다.
- 또, 각 자료형마다 괄호다 다른것을 확인할 수 있다.
- 출처: 코딩도장(https://dojang.io/mod/page/view.php?id=2461)
=
대입연산자는 18번이라 생각할 수 있고, 우선순위가 가장 낮다.- 기본
- 산술 > (비트) > 비교 > 논리 > 대입
- 실수로 계산하면 계산 결과도 실수로 나온다.
- False Condition
- 값 자체가 False일 때, (None, False)
- 숫자 데이터는 0으로 판명나는 것, (0, 0.0, 0j, Decimal(0), fraction(0, 1)
- 빈 시퀀스 또는 컬렉션: '', (), [], {}, set(), range(0)
- 이경우를 제외하면 True로 나올 것이다.
- 앞에 숫자를 보고 bool을 판단 했을 때, 앞이 True이면 앞이 출력된다. (100 or 0) => 100
- 만약 앞이 False면 뒤를 보고 판단한다. (앞이 0일경우 False니까 뒤가 출력된다.)
- 비교연산의 결과는 논리값으로 출력된다. True or False
- 리스트나 튜플등에 들어있는지 체크할 수도 있다. (멤버십연산자)
- 사전에서는 키에서만 비교한다.
- 사전의 구성요소들 보기 다양한 방법
- 전체라기보다 앞에서부터 비교해나간다. 앞에가 다 똑같다면 더 긴게 크다.
- 정수는 바로 대입한 것이 아닌, 같은 정수를 대입해도 id가 똑같이 나온다.
- 정수는 257이상은 별도의 객체로 생성됨.
- 반대로 256이하 (1byte)는 별도의 객체로 생성되지 않는다.?
unpacking
을 이용하면 swap을 한줄에 할 수 있다.
- 조건문 : (if, else, elif)
- 반복문 : (for, while)
- 한줄에 79글자 이상 쓰지 않는것이 좋다.
text = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\ aaaaaaaaaaaaaaaaaaaaaaaaaaa\ aaaaaaaaaaaaaaaaaaaaaaaaaaa
- 연산자는 뒤에쓰는것보다 앞에쓰는것이 좋다.
num = longest_name_number + longest_name_number_tow * longest_nume_number_three
- 함수호출할 떄는 붙여쓰자
print ('wrong') print('Yes!')
등... peps.python.org 홈페이지에서 볼 수 있다.
- 반복문으로 리스트의 원소를 하나씩 꺼내서 사용할 수 있다.
- enumerate는 리스트의 원소와 index를 매칭해서 리스트를 만들어 준다.
- range함수로 일정 범위의 정수값을 리스트로 만들어서 반복문의 횟수를 제어할 수 있다.