브렌쏭의 Veritas_Garage

[우리FISA] 2일차 Python basics with Colab 본문

[Project_하다]/[Project_공부]

[우리FISA] 2일차 Python basics with Colab

브렌쏭 2024. 7. 9. 11:14

AI_엔지니어링 2일차

! (셸 커맨드)

  • 셸(Shell)에서 실행되며, 따라서 리눅스 기반의 명령어들을 사용할 수 있습니다.
  • 셸 커맨드를 사용하여 파일 시스템 탐색, 외부 패키지 설치 등의 작업을 할 수 있습니다.
  • !python --help

이거 처음봄;;

  !pwd

Colab or Jupyter Functions

%%time

%, %% : 매직커맨드

파이썬 코드는 아니나 코랩 환경 내에서 특정 기능을 실행하도록 설계된 명령어.

  • '%' 또는 '%%' 기호를 사용하여 실행됩니다.
  • '%'는 한 줄에 대해 적용
  • '%%'는 셀 전체에 대해 적용됩니다.

REPL(Read, Evaluation, Print, Loop)

인터프리터는 REPL 과정을 따라서 동작을 하게 된다.

  • Read: 입력된 명령어를 읽고
    • 이 과정에서 인터프리터가 번역을 합니다 => 기계어
    • 문자로 된 명령어를 숫자(기계어/binary)로 변환
  • Evaluation: 명령어를 실행
  • Print: 명령어를 실행한 결과를 돌려줍니다
  • Loop: 이 과정을 계속 반복할 수 있습니다

CRLF

Enter를 누르면 줄바꿈이 되는데, 이때 줄바꿈을 표현하는 방식이 두 가지가 있다.

  • CR(Carriage Return): 커서를 맨 앞으로 이동
  • LF(Line Feed): 커서를 한 줄 아래로 이동

타자기를 사용하던 시절에 사용하던 방식이 내려오는 것

  • Carriage Return은 타자기의 카트리지를 맨 앞으로 이동시키는 것
  • Line Feed는 종이를 한 줄 아래로 이동시키는 것

윈도우는 CRLF를 사용하고, 리눅스는 LF를 사용한다.
요즘은 LF 하나로만 표현하는게 추세


Colab Session 유지하기

웹 브라우저의 Console, console command 에 입력한다

function ConnectButton(){
    console.log("Connect pushed"); 
    document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click() 
}
setInterval(ConnectButton,60000);

작동하지 않는다면 위 쿼리 셀렉터 부분을 바꿔서 잘 쓰면 됨


Swap & Unpack & Zip

Swap

  • 두 변수의 값을 바꾸는 방법
    a, b = b, a
  • 3개 이상의 변수를 바꾸는 방법
    a, b, c = c, a, b

Unpack

  • 리스트나 튜플 등의 자료형을 여러 변수에 할당하는 것
  • a, b, c = [1, 2, 3] # a = 1, b = 2, c = 3 a, b, c = (1, 2, 3) # a = 1, b = 2, c = 3 a, b, c = 1, 2, 3 # a = 1, b = 2, c = 3
  • 변수의 개수와 리스트의 원소 개수가 일치해야 합니다.
  • 변수의 개수가 더 많을 경우, 에러가 발생합니다.
    • *를 사용하여 나머지 변수에 할당할 수 있습니다.
    • a, *b = [1, 2, 3] # a = 1, b = [2, 3] a, *b, c = [1, 2, 3, 4, 5] # a = 1, b = [2, 3, 4], c = 5

Zip

  • 두 개 이상의 시퀀스 자료형을 짝지어서 튜플로 묶어주는 함수
  • list(zip([1, 2, 3], [4, 5, 6])) # [(1, 4), (2, 5), (3, 6)] list(zip([1, 2, 3], [4, 5])) # [(1, 4), (2, 5)]
  • 두 개 이상의 시퀀스 자료형의 길이가 다를 경우, 가장 짧은 길이에 맞춰서 짝지어줍니다.
  • zip 함수는 zip object를 반환합니다. list로 변환해주어야 합니다.

List Comprehension & Generator

List Comprehension

  • 리스트를 만드는 간결한 방법
  • [i for i in range(10)] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [i for i in range(10) if i % 2 == 0] # [0, 2, 4, 6, 8]
  • List Comprehension은 리스트뿐만 아니라, 딕셔너리, 집합 등 다양한 자료형에 사용할 수 있습니다.
  • {i: i**2 for i in range(10)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
  • List Comprehension은 for문을 사용하여 리스트를 만드는 방법입니다.
  • List Comprehension은 가독성을 높이고, 코드를 간결하게 만들어줍니다.
  • List Comprehension은 리스트뿐만 아니라, 딕셔너리, 집합 등 다양한 자료형에 사용할 수 있습니다.

Generator

  • List Comprehension과 유사하지만, 리스트를 반환하는 대신, Generator를 반환합니다.
  • Generator는 iterator를 생성해주는 함수입니다.
  • Generator는 yield 키워드를 사용하여 값을 반환합니다.
  • def gen(): yield 1 yield 2 yield 3 g = gen() print(next(g)) # 1 print(next(g)) # 2 print(next(g)) # 3
  • Generator는 한 번에 하나의 값만을 반환합니다.

Data Type

  • Mutable: 변경 가능한 자료형
    • 리스트, 딕셔너리, 집합
  • Immutable: 변경 불가능한 자료형
    • 숫자, 문자열, 튜플
    • Immutable한 자료형은 값을 변경할 수 없습니다.
    • Immutable한 자료형은 변수에 새로운 값을 할당하면, 새로운 메모리 주소에 할당됩니다.

Mutable & Immutable

  • Mutable한 자료형은 값이 변해도 메모리 주소가 변하지 않습니다.
  • Immutable한 자료형은 값이 변하면 새로운 메모리 주소에 할당됩니다.
  • Mutable한 자료형은 메모리를 효율적으로 사용할 수 있습니다.
  • Immutable한 자료형은 값이 변할 때마다 새로운 메모리 주소에 할당되기 때문에 메모리를 많이 사용합니다.

Float

  • 실수를 표현하는 자료형

부동소수점(floating-point) 방식

  • 소수점이 고정되어 있지 않고, 소수점의 위치가 움직입니다.
  • 부동소수점 방식은 가수부지수부로 나누어서 저장합니다.
  • 부동소수점 방식은 소수점의 위치를 움직일 수 있습니다.
  • 부동소수점 방식은 정밀도가 낮지만, 표현할 수 있는 범위가 넓습니다.
  • 부동소수점 방식은 컴퓨터에서 실수를 표현하는 방식으로, 실수를 정확하게 표현할 수 없습니다.
  • 부동소수점 방식은 컴퓨터에서 실수를 근사적으로 표현합니다.

Decimal

  • 실수를 정확하게 표현하는 자료형
  • Decimal은 실수를 정확하게 표현할 수 있습니다.
  • Decimal은 정밀도가 높지만, 표현할 수 있는 범위가 좁습니다.
from decimal import Decimal

a = Decimal('0.1') # 문자열으로 넣어줘야 한다
b = Decimal('0.2') # 수로 넣으면 float를 넣는 것이나 다름없기 때문

print(a + b) # 0.3

Fixed-point 방식(고정 소수점 방식)

  • 소수점의 위치가 고정되어 있습니다.

컨테이너(Container) 자료형

  • 여러 자료형을 저장할 수 있는 자료형
  • 리스트, 튜플, 딕셔너리, 집합 등이 있습니다.

리스트(List)

  • 리스트는 순서가 있고, 중복을 허용합니다.
  • 리스트는 변경 가능(Mutable)합니다.
  • 리스트는 대괄호([])를 사용하여 만듭니다.

튜플(Tuple)

  • 튜플은 순서가 있고, 중복을 허용합니다.
  • 튜플은 변경 불가능(Immutable)합니다.
  • 튜플은 소괄호()를 사용하여 만듭니다.

딕셔너리(Dictionary)

  • 딕셔너리는 순서가 없고, 중복을 허용하지 않습니다.
  • 딕셔너리는 키(Key)와 값(Value)의 쌍으로 이루어져 있습니다.
  • 딕셔너리는 중괄호({})를 사용하여 만듭니다.

집합(Set)

  • 집합은 순서가 없고, 중복을 허용하지 않습니다.
  • 집합은 중괄호({})를 사용하여 만듭니다.
  • 집합은 set() 함수를 사용하여 만들 수 있습니다.
  • 집합은 교집합(&), 합집합(|), 차집합(-) 등의 집합 연산을 할 수 있습니다.

 

'[Project_하다] > [Project_공부]' 카테고리의 다른 글

[우리FISA] 2일차 Python Methods  (0) 2024.07.10
[우리FISA] 2일차 Python Concepts  (0) 2024.07.09
[CS50] Memory Stack, Heap... by swap  (0) 2024.07.09
[우리FISA] 1일차 Orientation  (0) 2024.07.08
[혼공컴운] CS기초, 입문  (0) 2024.07.06
[BoostCourse] 확률론  (0) 2024.07.05
[3Blue1Brown] Attention  (1) 2024.07.05
Comments