✌ 5일차,,

Hojun Jeong·2022년 3월 20일
0

bootcamp

목록 보기
3/4
post-thumbnail

다중 list, dictionary -> 실습

비교연산자/논리연산자

  • 제어문에 중요한 역할을 함

  • 파이썬에서는 비교 연산자와 논리 연산자의 판단 결과로 True, False 사용

  • 사용할 때는 구분하지 않겠지만 작동방식 다름

  • 작동 결과를 bool 타입으로 출력

  • 비교연산자, 논리연산자 순서로 계산

  • flag라는 변수명 사용





비교 연산자

  • 값 자체를 비교 : < <= > >= == !=

  • 변수 라는 객체의 주소를 비교 : is , is not

1 == 2 [값비교]
1 is 2   [주소 비교]
  • 추가로 id()라는 함수로 주소를 받아와서 확인

is를 이용한 다양한 실험

얕은 복사, 깊은복사,is를 이용


1. integer은 값이 달라지면 주소가 달라진다 == 값이 같으면 같은 주소를 갖는다(deepcopy를 하더라도)
주소의 효율을 위해 어느정도의 숫자 범위 안에서는 같은 값은 같은 주소를 같는다.
  import implements
  from copy import *
  a=100100100
  b=a               #얕은복사(주소복사)
  c=deepcopy(a)     #깊은복사(값 복사)
  print(a is b); print(a is c)

  [print]
   True
   True

2. float 타입은 같은 float 여도 부동 소수점의 이유로 다른 주소값을 갖는다.
  import implements
  a=1
  b=1.00
  c=1.00
  print(a is b) ; print(b is c)

  [print]
   False
   False

3. sequence 타입에서 배열 자체가 갖는 주소는 얕은 복사에서는 같고, 깊은 복사에서는 다름
   또, 배열의 원소가 가리키는 주소값은 int에서의 그 값의 주소와 같음
  import implements
  from copy import *
  a= [1,2,3,4,5]
  copy1 = a
  copy2 = deepcopy(a)
  print(a is copy1); print(a is copy2)

  [print]
   True
   False





논리 연산자

  • not and or 순서로 우선 판단

  • 단락평가(short-circuit evaluation)를 함

    • short-circuit evaluation
    • 첫번째 값에 따라 두번째 값은 평가하지 않음
    • 논리연산자의 결과값들의 규칙성을 이용하여 생겨난 평가'라고 이해함

or

(True or ~) == True / (False or ~) == ~

True or True == True
True or False == True
False or True == True
False or False == False

True 먼저 나올때, 뒤에 어떠한 값이와도 True

False 먼저 나올때, 뒤에 값을 따름

and

and : (False and ~) == False / (True and ~) == ~
False and True == False
False and False == False
True and False == False
True and True == True

False 먼저 나올때, 뒤에 어떠한 값이 와도 False

True 먼저 나올때, 뒤에 값을 따름





  • 문자열 메소드


    • https://docs.python.org/ko/3/library/stdtypes.html#text-sequence-type-str

    • 문자들의 순서 있는 집합

    • 여러줄로 이뤄진 문자열 표현 가능

      • 단일, 쌍따옴표 표현
    • print 함수 사용시 특수 기호로 처리 가능 :\r(문자열 앞단에 선언)

    • str() : 문자열로 형변환

    • 문자열 반복 'hojun'*3 -> hojunhojunhojun

    • 문자열 출력

    • 문자열 indexing

    • 문자열 slice : 문자열의 일부 추출

    • 문자열의 내장함수

    • 유니코드 문자열

    • 파이썬 공식 문자열 레퍼런스

    • 자주 사용되는 문자열 메소드

      • split()

        • 문자열.split(t,n) - t기준으로 n번 분리(왼쪽 기준)
        • split()일때는 디폴트로 띄어쓰기를 분리시킨다
        • split(maxsplit=2, sep='/') -> 전달하려는 매개변수 이름 입력시 순서는 상관없음
      • replace()

        • 문자열 치환
        • 조건에 맞는 문자열을 치환
        • replace(old,new)
      • strip()

        • strip([chars]) , rstrip()(오른쪽 strip), lstrip()(왼쪽), strip()(디폴트는 문자열 스페이스 전부지움)
        • 문자열의 앞,뒤에 존재하는 화이트 스페이스를 전부제거
        • 불필요한 문자들은 전부 제거
        • 문자열 중간에 있는 화이트 스페이스는 제거 안됌
      • join()

      • format()






추가정보 😎

  • 값을 초기화하는 경우, int 같은 경우 같은 값을 다른 변수에 초기화 할때 특정 작은 범위에서는 값이 같다는 이유로 같은 주소를 할당한다. 하지만 그 범위가 커진다면 주소가 달라진다.
  • float같은 경우는 다른 변수에 초기화 할 때 같은 값이어도 모두 주소가 다르다. 소수점 이하의 숫자때문
  import implements
  a=1
  b=1.0
  print(a is b)
  print(a is int(b))
  print(float(a) is b)

  [print]
  False
  True  -> integer에서 하나의 값은 하나의 주소만 갖음(작은 수 범위)
  False -> float는 값이 같아도 다른 주소 갖음(사실 값이 소숫점까지 고려하면 다르기 때문)



  • 자료형은 mutable, immutable의 두가지 타입으로 분류할 수 있다.
profile
Student , Junior Developer

0개의 댓글