ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PlayData - Day 2] 파이썬 변수 타입
    [플레이데이터] 2022. 12. 20. 11:44

    1. K-Digital Training 과정

    • 빅데이터 기반 지능형SW 및 MLOps 개발자 양성과정 19기 (Day 2)

     

    2. 목차

    1. 주피터 노트북 기본 경로 설정
    2. 문자열
    3. 리스트
    4. 튜플
    5. 세트
    6. 리스트, 튜플, 세트 간 타입 변환
    7. 딕셔너리

    3. 수업 내용

     

    1. 주피터 노트북 기본 경로 설정

    • Jupyter Notebook의 속성에서 경로 지정 (* 관리자 권한 = '예')

    Jupyter Notebook 파일 위치 열기
    오른쪽 클릭 후 속성 클릭
    맨 마지막 따옴표("") 안의 내용을 원하는 경로로 변경

     

    2. 문자열 연산: 더하기, 곱하기

    • 여러 문자열을 더하면 나란히 나열된다.
    • 문자열에 숫자를 곱하면 곱한 숫자만큼 나열된다. 
    a = 'Enjoy '
    b = 'python!'
    c = a + b
    print(c)
    print(a*3)
    
    > Enjoy python!
    > Enjoy Enjoy Enjoy

     

    3. 리스트: 데이터를 한꺼번에 처리하기 위해 묶어둔다.

    student1 = [90, 95, 85, 80]
    student1
    
    > [90, 95, 85, 80]
    • 리스트 내부 데이터의 위치는 0부터 시작한다.
    student1[0]
    
    > 90
    • 리스트 내의 각 데이터를 변경할 수 있다.
    student1[1] = 97
    student1
    
    > [90, 97, 85, 80]
    • 리스트 내에 문자열 또한 할당할 수 있다.
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    myFriends[2] # 세번째 문자열 출력
    
    > 'Lisa'
    
    myFriends[-1] # 마지막 문자열 출력
    
    > 'Mary'
    • 다양한 타입의 데이터를 혼합해서 리스트에 포함할 수 있다.
    mixedList = [0, 2, 3.14, 'python', 'program', True, myFriends]
    mixedList
    
    > [0, 2, 3.14, 'python', 'program', True, ['James', 'Robert', 'Lisa', 'Mary']]
    • 리스트를 더할 수 있다(연결할 수 있다).
    list_con1 = [1,2,3,4]
    list_con2 = [5,6,7,8]
    list_con = list_con1+list_con2 #리스트 연결
    print(list_con)
    
    > [1, 2, 3, 4, 5, 6, 7, 8]
    • 리스트를 곱하면 하나의 리스트 안에서 데이터가 반복된다.
    list_con = list_con1 * 3
    list_con
    
    > [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
    • 리스트 중 일부 항목 가져오기
    list_data = [0,1,2,3,4,5,6,7,8,9]
    print(list_data) # == list_data[0:10:1]
    print(list_data[0:3])
    print(list_data[4:8])
    print(list_data[:3])
    print(list_data[7:])
    print(list_data[::2])
    
    > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    > [0, 1, 2]
    > [4, 5, 6, 7]
    > [0, 1, 2]
    > [7, 8, 9]
    > [0, 2, 4, 6, 8]
    
    list_data2 = [1,2,3,4,5,6,7,8,9,0]
    print(list_data2[2::3])
    
    > [3, 6, 9]
    • 리스트에서 항목 삭제하기
    print(list_data)
    del list_data[6]
    print(list_data)
    
    > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    > [0, 1, 2, 3, 4, 5, 7, 8, 9]
    • 리스트에서 항목의 존재 여부 확인하기: Bool 형태로 반환된다
    list_data1 = [1,2,3,4,5]
    print(5 in list_data1)
    print(6 in list_data1)
    
    > True
    > False
    • 리스트 메서드 활용하기
    print(myFriends)
    myFriends.append('Thomas') #리스트에서 항목 하나를 마지막에 추가
    print(myFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['James', 'Robert', 'Lisa', 'Mary', 'Thomas']
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    myFriends.insert(1,'Paul') #리스트에서 특정 항목에 삽입
    print(myFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['James', 'Paul', 'Robert', 'Lisa', 'Mary']
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    myFriends.extend(['Laura', 'Betty']) # 항목 여러개를 마지막에 추가
    print(myFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['James', 'Robert', 'Lisa', 'Mary', 'Laura', 'Betty']
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    myFriends.remove('James') # 첫번째로 일치하는 항목을 리스트에서 제외
    print(myFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['Robert', 'Lisa', 'Mary']
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    popFriends = myFriends.pop() # 마지막 항목을 리스트에서 제거하고, 해당 항목 반환
    print(myFriends)
    print(popFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['James', 'Robert', 'Lisa']
    > Mary
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    indexFriend = myFriends.index('Lisa') # Lisa가 리스트의 어느 위치에 있는지 확인
    print(indexFriend)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > 2
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary', 'Lisa']
    print(myFriends)
    LisaCount = myFriends.count('Lisa') # Lisa가 몇명인지 카운트
    print(LisaCount)
    
    > ['James', 'Robert', 'Lisa', 'Mary', 'Lisa']
    > 2
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    myFriends.sort() # 리스트 정렬
    print(myFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['James', 'Lisa', 'Mary', 'Robert']
    
    myFriends = ['James', 'Robert', 'Lisa', 'Mary']
    print(myFriends)
    myFriends.reverse() # 리스트 순서를 거꾸로 정렬
    print(myFriends)
    
    > ['James', 'Robert', 'Lisa', 'Mary']
    > ['Mary', 'Lisa', 'Robert', 'James']

     

    4. 튜플: 리스트와 유사하지만 항목 변경이 불가능한 타입

    tuple1 = (1,2,3,4)
    tuple1
    
    > (1, 2, 3, 4)
    
    tuple1[1]
     
    > 2
    • 소괄호를 넣지 않아도 생성이 가능하다.
    tuple2 = 5,6,7,8
    print(tuple2, "/", type(tuple2))
    
    > (5, 6, 7, 8) / <class 'tuple'>
    • 인자가 1개인 튜플 생성: 데이터 뒤에 콤마(,)가 필수
    tuple3 = (9,) # 반드시 쉼표가 들어가야 tuple이 된다.
    tuple4 = 10,
    tuple5 = (9) # 쉼표를 쓰지 않으면 숫자로 입력된다.
    print(tuple3, "/", tuple4, "/", tuple5, "==", type(tuple5))
    
    > (9,) / (10,) / 9 == <class 'int'>
    • 튜플 다루기: 튜플은 변경 및 삭제가 불가능하다
    tuple6 = (1,2,3,4)
    tuple6[1] = 5 # 한번 생성된 튜플의 요소는 변경되지 않음
    
    > TypeError: 'tuple' object does not support item assignment
    
    del tuple6[1] # 한번 생성된 튜플의 요소는 삭제되지 않음
    
    > TypeError: 'tuple' object doesn't support item deletion
    • 변경 이외의 메서드는 리스트와 사용방법이 동일하다
    tuple7 = ('a','b','c','d','e','f')
    indextuple = tuple7.index('c')
    print(indextuple)
    
    > 2
    • 리스트보다 튜플을 사용하는 경우?
      • 메모리가 덜 든다! == 코드가 더 효율적으로 돌아간다!
      • 특히 빅데이터로 갈수록 효율적인 코드가 중요해진다.
      • 중요하고 변경되지 않을 필요가 있는 리스트를 튜플로 입력한다.

     

    5. 세트: 중복이 없는 리스트 타입

    • 세트는 {중괄호}로 표기
    set1 = {1,2,3}
    set1a = {1,2,3,3}
    print(set1)
    print(set1a)
    
    > {1, 2, 3}
    > {1, 2, 3}
    • 세트의 교집합, 합집합, 차집합 구하기
    A = {1,2,3,4,5}         # Set A
    B = {4,5,6,7,8,9,10}    # Set B
    A.intersection(B) # 집합 A에 대한 집합 B의 교집합(A∩B)
    
    > {4, 5}
    
    A.union(B) # 집합 A에 대한 집합 B의 합집합(A∪B)
    
    > {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
    A.difference(B) # 집합 A에 대한 집합 B의 차집합(A-B)
    
    > {1, 2, 3}
    • 연산자로 쉽게 표현할 수 있다
    A = {1,2,3,4,5}         # Set A
    B = {4,5,6,7,8,9,10}    # Set B
    A & B # A와 B 모두에서 참인 값
    
    > {4, 5}
    
    A | B # A 또는 B에 속한 값
    
    > {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
    A - B # A에서 B를 제외한 값
    
    > {1, 2, 3}

     

    6. 리스트, 튜플, 세트 간 타입 변환

    • list(), tuple(), set()은 서로 변환 가능
    a = [1,2,3,4,4]
    print(a, type(a))
    
    > [1, 2, 3, 4, 4] <class 'list'>
    
    # 튜플로 변환
    b = tuple(a)
    print(b, type(b))
    
    > (1, 2, 3, 4, 4) <class 'tuple'>
    
    # 세트로 변환
    c = set(a)
    print(c, type(c))
    
    > {1, 2, 3, 4} <class 'set'>
    
    # 리스트로 변환
    print(list(b), list(c))
    
    > [1, 2, 3, 4, 4] [1, 2, 3, 4]

     

    7. 딕셔너리: 키와 값으로 이루어진 리스트 타입

    • 딕셔너리

    1. 중괄호로 표현한다.
    2. 키(key)와 값(value)으로 나누어져 있다.
    3. 인덱스 대신 키 값을 사용한다. 딕셔너리[키]

     

    country_capital = {"영국":"런던","프랑스":"파리", "스위스":"베른",
                       "호주":"멜버른","덴마크":"코펜하겐"}
    print(country_capital, type(country_capital))
    
    > {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른', '덴마크': '코펜하겐'} <class 'dict'>
    
    # 값(Value) 구하기
    country_capital['영국']
    
    > '런던'
    
    # 위치 값이 아닌, 키(key) 값으로 호출한다.
    dict_data1 = {1:'버스', 3:'비행기', 4:'택시', 5:'자전거'}
    dict_data1
    
    > {1: '버스', 3: '비행기', 4: '택시', 5: '자전거'}
    
    dict_data1[3]
    
    > '비행기'
    • 다양한 형태의 딕셔너리가 가능하다
    # 키와 값이 모두 숫자일 경우
    dict_data2 = {1:10, 2:20, 3:30, 4:40, 5:50}
    print(dict_data2)
    print(dict_data2[4])
    
    > {1: 10, 2: 20, 3: 30, 4: 40, 5: 50}
    > 40
    
    # 키는 문자열, 값은 리스트인 경우
    dict_data3 = {"list_data1":[11,12,13], "list_data2":[21,22,23]}
    print(dict_data3)
    print(dict_data3["list_data2"])
    
    > {'list_data1': [11, 12, 13], 'list_data2': [21, 22, 23]}
    > [21, 22, 23]
    
    # 다양한 형태를 가지고 있는 딕셔너리
    mixed_dict = {1:10, 'dict_num':{1:10, 2:20},
                 "dict_list_tuple":{"A":[11,12,13], "B":(21,22,23)},
                 "dict_string":"이것은 책입니다."}
    • 딕셔너리 다루기: 데이터 추가, 변경, 삭제
    country_capital["독일"] = "베를린" # 추가
    country_capital
    
    > {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른', '덴마크': '코펜하겐', '독일': '베를린'}
    
    country_capital["호주"] = "캔버라" # 변경
    country_capital
    
    > {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '캔버라', '덴마크': '코펜하겐', '독일': '베를린'}
    
    del country_capital["덴마크"] # 삭제
    country_capital
    
    > {'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '캔버라', '독일': '베를린'}
    • 딕셔너리 메서드 활용하기
    fruit_code = {"사과":101, "배":102, "딸기":103, "포도":104, "바나나":105}
    print(fruit_code.keys(), type(fruit_code.keys())) # 딕셔너리에서 키 전체를 리스트 형태로 변환
    print(fruit_code.values(), type(fruit_code.values())) # 딕셔너리에서 값 전체를 리스트 형태로 반환
    print(fruit_code.items(), type(fruit_code.items())) # 키와 값을 (키, 값)처럼 튜플 형태로 반환
    
    > dict_keys(['사과', '배', '딸기', '포도', '바나나']) <class 'dict_keys'>
    > dict_values([101, 102, 103, 104, 105]) <class 'dict_values'>
    > dict_items([('사과', 101), ('배', 102), ('딸기', 103), ('포도', 104), ('바나나', 105)]) <class 'dict_items'>
    
    # 데이터 추가
    fruit_code2 = {"오렌지":106, "수박":107}
    fruit_code.update(fruit_code2)
    fruit_code
    
    > {'사과': 101, '배': 102, '딸기': 103, '포도': 104, '바나나': 105, '오렌지': 106, '수박': 107}
    
    # 데이터 삭제
    fruit_code2.clear() # 안에 있던 데이터가 사라지는 것이지, 변수가 사라지는 것은 아님
    print(fruit_code2, type(fruit_code2))
    
    > {} <class 'dict'>

     

    댓글

Designed by Tistory.