220510

HyeonKi Jo·2022년 5월 10일
0
post-thumbnail

0. 파이썬의 기초문법 (이어서)

  • Ctrl + c + k : 그룹 주석처리
  • Ctrl + c + u : 그룹 주석 해제

input

  • input()
    - 키보드 입력을 받을 수 있다.
    • 기본적으로 문자열 입력이다.
    • 그래서 10+50 이 1050으로 나온다.

int

  • 정수로 만들어 준다.
  • 함수처럼 보이지만 실제로는 클래스이다.
  • 참고로 type()도 클래스 이다.

float

  • int가 아니라 float로 하면 실수형으로 들어간다.

Introspection

  • 주피터 노트북에서 객체에 대한 정보 확인
  • fn이 무엇을 가지고 있는지 확인

Class

  • 함수처럼 호출해서 사용할 수 있고,
  • 또, 사용자 정의 변수처럼도 사용할 수 있다.
    - 객체지향
  • 보통 JAVA와 같은 언어에서는 첫글자를 대문자로 사용한다.

변수

  • 값 (데이터)를 담는 그릇
  • 데이터 종류에 따라 데이터 타입이 결정된다.
  • 데이터를 담은 변수의 데이터 타입도 그때 결정된다.

정적(Static) VS 동적(Dynamic)

  • 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()

  • 객체의 고유 주소값을 반환해준다.

Boolean type

  • 파이썬 Bool 리터럴 : True, False (첫글자 대문자에 유의)

Scalar 형

  • 단일 값 : 숫자형(int, float, complex), 불형(bool), None 등

Collection 형

  • 다중 값, 여러가지 값을 가지는 형
  • 시퀀스: 데이터가 순서대로 저장 (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번째 줄 부터 에러로 동작하지 않은 것을 볼 수 잇다.
  • 튜플 내부의 리스트는 변경이 되었다.
  • 튜플 내부 리스트내부의 원소는 변경이 되지만, 리스트 자체는 변경되지 않을 것이다.
  • 원소 한개짜리 튜플 만들기
    • 원소 한개짜리 튜플을 만드려면 뒤에 ,를 넣어야 한다.

사전 (dictionary, dict)

  • 사전 리터럴: 중괄호{} 사용
  • 아이템(원소) 키, 값 쌍은 콜론으로 구분
  • 순서없는 자료형

  • 정의되지 않은 키는, 에러가 출력된다.
  • 입력이 중복되면 나중에 정의된 키가 사전에 정의되게 된다.
  • 키는 immutable해야 한다.
  • 사전에서 제거할면 del함수를 사용하면 된다.
  • del함수는 그냥 변수도 삭제하는 함수이다.
  • 리스트의 원소도 삭제된다.

GC : Garbage Collector

  • 사용하지 않지만 메모리를 점유하고 있는 변수 같은 Garbage를 모아서 처리하는 기능, 메모리 공간확보

리스트 원소 삭제

  • del()을 사용해서, 리스트의[i]번째 원소 제거 가능
  • remove를 사용해서, 리스트의 (value)값 삭제
  • pop은 원하는 위치의 원소 삭제가 가능하며, 기본값은 제일 뒤의 값을 제거한다.
    - 제일 뒤의 값을 제거할 때, 제거 동작중 가장 빠르다.
  • 튜플은 원소 삭제가 안된다.

집합 (SET)

  • 집합을 정의하고, 원소 추가해보았다. set는 중복을 허용하지 않는다는 큰 장점이 있다.
  • list와 tuple과 비교하여 중복을 제거했기 때문에 짧다.
  • 또, 각 자료형마다 괄호다 다른것을 확인할 수 있다.

연산자 우선순위

  • 출처: 코딩도장(https://dojang.io/mod/page/view.php?id=2461)
  • = 대입연산자는 18번이라 생각할 수 있고, 우선순위가 가장 낮다.
  • 기본
    • 산술 > (비트) > 비교 > 논리 > 대입

  • 실수로 계산하면 계산 결과도 실수로 나온다.

Boolean 테스팅

  • 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을 한줄에 할 수 있다.

흐름 제어 (Flow Control)

  • 조건문 : (if, else, elif)
  • 반복문 : (for, while)

코드 블록(code block)

  • 프로그램 문장을 묶은 것
  • 파이썬은 띄어쓰기로 코드 블록을 표현
  • 다른 언어들은 보통 중괄호로 코드를 묶음

파이썬 코드 작성법

  • 한줄에 79글자 이상 쓰지 않는것이 좋다.
text = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
aaaaaaaaaaaaaaaaaaaaaaaaaaa\
aaaaaaaaaaaaaaaaaaaaaaaaaaa
  • 연산자는 뒤에쓰는것보다 앞에쓰는것이 좋다.
num = longest_name_number
 	 	+ longest_name_number_tow
        * longest_nume_number_three
  • 함수호출할 떄는 붙여쓰자
print ('wrong')
print('Yes!')

등... peps.python.org 홈페이지에서 볼 수 있다.

조건문

  • 조건 : 비교식, 논리값, Trurh Value Testing으로 결정
  • if 필수
  • else 옵션
  • elif (else if) 옵션, 필요한 만큼 여러번

  • 논리값이 아닌 데이터가 조건에 사용되면 빈 값인 경우를 제외하고 True로 나올 것이다.
  • 간단 퀴즈

반복문

  • 반복문으로 리스트의 원소를 하나씩 꺼내서 사용할 수 있다.
  • enumerate는 리스트의 원소와 index를 매칭해서 리스트를 만들어 준다.

  • range함수로 일정 범위의 정수값을 리스트로 만들어서 반복문의 횟수를 제어할 수 있다.
profile
Talking Potato

0개의 댓글