개발새발개발

리스트, 튜플, Range, dict, set, bool, None, 연산자, 형변환, 단축평가 본문

개발새발개발

리스트, 튜플, Range, dict, set, bool, None, 연산자, 형변환, 단축평가

birdsfoot 2024. 7. 18. 20:10

 

Sequence Type

- 문자열, 리스트, 튜플, range

 

 

[ 리스트 ]


  • 여러 개의 값을 순서대로 저장하는 변경 가능한 시퀀스 자료형
  • 0개 이상의 객체를 포함하며 데이터 목록을 저장
  • 모든 자료형 저장 가능
  • 시퀀스이기 때문에 시퀀스의 특성 5가지를 모두 대입 가능!(인덱싱, 슬라이싱, 길이)
  • 단계적 접근
    ex_list = [1,a,2,'study',['hello', 'world','happy']]
    print(ex_list[4][0])         #hello
    print(ex_list[4][0][-1])    #o
  • 가변성을 가지고 있다
    'ex_list[0] = z' 라고 하면 0번째 값이 z로 바뀜
  • val1 = [1,2,3]의 뜻 : val1이 1,2,3이 저장된 집합체의 주소를 값
    val2 = val1의 뜻 : val1이 가르키는 집합체를 가르킴

 

( 튜플 )


  • 여러 개의 값을 순서대로 저장하는 변경 불가능한 시퀀스 자료형
  • 모든 자료형 저장 가능
  • 불변의 특성이 있어 여러개의 값을 안전하게 전달하거나 그룹화, 다중 할당할 때 사용
  • 개발자가 사용하기보단 파이썬 내부 동작에서 주로 사용함 (잘안씀!)
  • ※ 하나의 데이터만 저장할 땐 `tuple = (1,) ` 처럼 뒤에 ','를 넣어줘야 함
    콤마 없이 1만 적으면 그냥 int 1 이 됨
  • 시퀀스이기 때문에 인덱스, 슬라이싱, 길이 모두 가능함
  • 단, 튜플은 불변임! 
    `tuple[0] = 'z'`     #error
  • 재할당은 가능함
    a = 100
    a = 99
  • 다중 할당
    x,y = (1,2) / x,y = 1,2 둘 다 작동되지만 튜플은 불변이라는 특징이 있음

 

Range


  • 연속된 정수 시퀀스를 생성하는 변경 불가능한 자료형
  • range(시작 값, 끝 값, 증가 값)
  • range(n) : 0부터 시작하기 때문에 n-1까지 출력함
  • range(n,m) : n 이상, m 미만
  • 증가 값이 음수인 경우 : 감소, 시작값이 끝 값보다 커야함
  • print(list(ex_range)) 이렇게 형변환 하면 내부 데이터 확인 가능

 

 

Non-Sequence Type

 

{ dictionary }


  • 특징
    1. 순서와 중복이 없음(Non 시퀀스) 
        ex) 2번째 요소는? 없음! 순서가 없으니까! index 사용도 불가능함
    2. key-value 쌍으로 구성
    3. 변경 가능한 자료형

  • 표현
    1. key 는 변경 불가능한 자료형만 사용 가능
      : str, int, float, tuple, range 등
    2. value는 모든 자료형 사용 가능
    3. 키를 사용해 값을 얻어냄
      ex) print(ex_dict['key1'])      #value1
  • 값 추가 가능
    ex_dict['key2'] = 'value2'
    # {key1 : value1, key2 : value2}
  • value 값은 변경 가능
    ex_dict['key2'] = 'hello'
    # {key1 : value1, key2 : hello}

 

set


  • 집합
  • 순서와 중복이 없는 변경 가능한 자료형
  • 수학에서의 집합과 동일한 연산 처리 가능
    - 합집합(|), 차집합(-), 교집합(&) 가능
    - ex) print(set1 | set2)
    - 중복 제거, 집합 연산 시 사용함
  • 표현
    set_1= set()        #빈세트일 땐 딕셔너리와 혼동될 수 있어 set()로 표현
    set_2= {1,2,2}     #{1,2}  중복이 없으니까!

 

 

 

 

 

 

Other Types

 

None


  • '값이 없음'을 표현하는 자료형 (≠無)
    a = None (N은 대문자)
  • ex) a = None 
    print(a)  #None

 

Boolean


  • 참(True) 과 거짓(False)  ※첫 글자 대문자
  • 비교(참/거짓), 논리 연산에 사용
  • 주로 조건, 반복문과 함께 사용
  • print(5>10)     #False
    print('3' != 3)    #True

 

 

Collection


 

  • 여러 개의 항목 또는 요소를 담는 자료 구조 총칭
  • Str, list, tuple, / set, dict
       시퀀스         / 논시퀀스
  • mutable (가변) : list, set, dict 
  • immutable (불변)  : Str, tuple

 

 

형변환 Type Conversion


  • 형변환 : 데이터 타입 변환
  • 암시적 형변환 / 명시적 형변환
  • 암시적 형변환 : 파이썬이 자동으로 수행
    - 정수와 실수의 연산에서 실수로 암시적 형변환 나타남
       ex) print(5+2.0)    #7.0
     - Bool과 Numeric 에서도 가능 (True : 1, False : 0)
       ex) print(True + 3)   #4
  • 명시적 형변환 : 암시적을 제외한 모든 경우, 개발자가 직접 지정
    - str → int : 형식 맞아야 가능
        ex) print(int('4.7'))  #error    #float로 하면 가능
        ex) print(int(3.5))   #3          #.5를 버림
    - int → str : 모두 가능
       ex) print(str(100) + '점')  #100점
    - dict 에서 형변환하고 더하기
     ex) abc['이름'] = str(abc['이름']) + '입력하세요.'        #변수에 할당해주기!

 

 

 

연산자


연산자

  • 나누기의 경우 실수, 정수 상관없이 결과값은 실수로 나온다
    ex) 10 / 5   #2.0

비교 연산자

  • >=, <=
  • == 같음 != 같지 않음
  • 문자열 비교도 가능함
    ex) 'a' < 'b'              #True     #사전순(아스키코드)으로 비교
    ex) 'hello' < 'ssafy'  #True     # 첫글자부터 순서를 비교
    ex)  'a' > 'A'             #True     #소문자가 더 큼
  • is 비교 연산자(식별연산자)
    - 메모리 내에서 같은 객체를 참조하는 지 확인!
    - ==는 동등성(단순 값) , is는 식별성
      ex) 1 == True  #True
            1 is True     #False
       ex) 2 == 2.0    #True
             2 is 2.0      #False
    - is 같음, is not 같지 않음
    - None, Bool에 사용함

 

논리연산자

  • and (둘다), or(하나라도), not(반대)
    ex) not False / not 0    # True
    and의 경우 둘다 참이어야 참이기 때문에 앞에 값이  false면 뒷 값은 확인 안함
  • 0, 0.0, None, 빈리스트 같은 것은 False
  • 사용 예시
    if val() :
        print(val)
    else :
        print('비어있습니다.')

    #비어있습니다

 

멤버십 연산자

  • 특정 값이 시퀀스나 다른 컬렉션에 포함되는지 확인
  • 값 in / not in 컬렉션이름
    딕셔너리의 경우 값에 key가 들어감
  • 한 글자가 아닌 연속적인 문자도 가능
    'soft'  in  'samsung software'

 

시퀀스형 연산자

  • + 더하기     ex) [1,2] + [3,4]    # [1,2,3,4]
  • * 반복하기

 

단축평가


  • 논리 연산에서 두번째 피연산자를 평가하지 않고 결과를 결정하는 동작
  • 중간에 이미 결정나버리면 그 뒤에는 계산 안함
  • 코드 실행 최적화 및 불필요한 연산을 피하기 위해 시행
  • ex)
    print (4 and 6)    #6   #평가가 6까지 감
    print (2 and 0)    #0    #평가가 2까지 감
    print (0 and 3)    #0     #0이 False라서 뒤 안봄! 3까지 안감
    print (0 and 0)    #0     # 앞의 0 (0이 거짓이라 뒤까지 안봄)


    plate = 'agwds'
    print(('a' and 'b') in plate)  # False   #1. ()먼저 계산 str 이라 무조건 true, a 다음 계산인 b로 넘어감, 값 : b
                                                            #2. b는 plate 안에 없으니  False
    print(('b' and 'a') in plate)  # True    #1. a    2. True


    print (5 or 3)  #5   #5가 참이라서 3까지 안 봄
    print (0 or 3)  #3    #0이 거짓이라 뒤에 3까지 봄
    print (0 or 0)  #0    #뒤에있는 0이 나옴