부산사는신씨

혼공파 3주차 본문

Python

혼공파 3주차

부산사는신씨 2020. 7. 24. 10:28

목표

  • 리스트, 딕셔너리, 범위 자료형에 대해 이해하기미션
  • 리스트, 딕셔너리, 범위 자료형에 대해 이해한 내용을 바탕으로 포스팅
  • 157쪽 1번 문제의 답 쓰고 인증샷

4장

1. 리스트

1.1 리스트란?

  • 사전적인 의미는 '목록'
  • 여러가지 자료를 저장 할 수 있는 자료
  • javascript에서의 Array와 비슷함.
    >>> array = [100, 200, "문자열", True]
    >>> print(array)
    [100, 200, "문자열", True]

1.2 리스트의 접근

  • 인덱스는 0부터 시작 함.

    >>> array = [100, 200, "문자열", True]
    >>> print(array[0])
    100
    # 역순으로도 접근 가능 함.
    >>> print(array[-1])
    True
    >>> print(array[-2])
    "문자열"
    # 문자열의 경우는 2차 배열 형태로도 접근 가능 함.
    >>> print(array[-2][0])
    "문"
    # 2차 배열 형태의 리스트도 가능 함.
    >>> array2 = [[1,2,3], [4,5,6], [7,8,9]]
    >>> print(array2[0][0])
    1
    # IndexError 발생
    >>> print(array2[3])

1.3 리스트의 연산

  • 연결(+)
    >>> list_a = [1,2,3]
    >>> list_b = [4,5,6]
    >>> print(list_a + list_b)
    [1,2,3,4,5,6]
  • 반복(*)
    >>> list_a = [1,2,3]
    >>> print(list_a * 3)
    [1,2,3,1,2,3,1,2,3]
  • len으로 요소의 개수를 출력 할 수 있음.

1.4 리스트의 함수

  • append
    • 리스트에 요소를 '뒤에서부터' 추가 할 수 있음.
    • 리스트.append(요소)
      >>> list_a = [1,2,3]
      >>> list_a.append(4)
      >>> print(list_a)
      [1,2,3,4]
  • insert
    • 리스트에 요소를 '원하는 위치에' 추가 할 수 있음.
    • 리스트.insert(위치, 요소)
      >>> list_a = [1,2,3]
      >>> list_a.insert(0,4)
      >>> print(list_a)
      [4,1,2,3]
  • extend
    • 리스트를 다른 리스트와 합칠 수 있음.
    • 아마도 새로운 주소 영역에 값을 새로 생성하고 주소값을 바꿔치기 하는 방식인듯함.
    • append와 다른점은 같은 레벨의 요소는 merge함.
      >>> list_a = [1,2,3]
      >>> list_a.extend([4,5,6])
      >>> print(list_a)
      [4,1,2,3]
      # append는 아래와 같이 작동 함.
      >>> list_a = [1,2,3]
      >>> list_a.append([4,5,6])
      >>> print(list_a)
      [1,2,3,[4,5,6]]
  • pop
    • 원하는 위치의 요소를 제거 할 수 있음
    • 리스트.pop()만 실행 하면 제일 마지막부터 제거함.
    • del 리스트[인덱스]와 같이 del 키워드로도 제거 할 수 있음.
    • del 키워드는 del 리스트[인덱스시작범위:인덱스끝범위]처럼 범위지정으로 삭제도 가능 함
      >>> list_a = [1,2,3]
      >>> list_a.pop(0)
      >>> print(list_a)
      [2,3]
      >>> list_b = [1,2,3]
      >>> del list_b[0]
      >>> print(list_b)
      [2,3]
  • remove
    • 리스트에서 원하는 값을 찾아서 제거 할 수 있음.
    • pop이나 del과 달리 값으로 제거 가능 함.
      >>> list_a = ["일","이","삼"]
      >>> list_a.remove("이")
      >>> print(list_a)
      ["일","삼"]
  • clear
    • 리스트를 모두 제거 할 수 있음.
    • 리스트 자체가 제거 되는것이 아니라 리스트의 요소들만 사라짐.
      >>> list_a = ["일","이","삼"]
      >>> list_a.clear()
      >>> print(list_a)
      []
  • in / not in
    • 리스트에 찾는 값이 있는지 없는지 확인 할 수 있음.
      >>> list_a = [1,2,3,4,5,6]
      >>> 1 in list_a
      True
      >>> 100 in list_a
      False
      >>> 100 not in list_a
      True
      >>> 1 not in list_a
      False

1.5 리스트 순회

  • for 반복문의 기본 형태
    for 반복자 in 리스트:
        코드
    list_a = [1,2,3,4,5]
    for list in list_a:
        print(list)
    # 실행결과
    1
    2
    3
    4
    5

2. 딕셔너리

2.1 딕셔너리란?

  • key: value 기반으로 데이터를 컨트롤 할 수 있음.
  • javascript의 object와 비슷함.
  • key로 문자열, 숫자 ,bool을 선언 할 수 있음.
  • key는 당연하게 중복으로 사용 할 수 없음

2.2 선언과 접근

  • javascript처럼 {}로 선언 하고 콤마(,)로 요소를 연결 함.
    # 선언
    변수 = {
        키: 값,
        키: 값,
        ...
        키: 값
    }
    #접근
    변수[키]
    >>> dic_a = {
            "director": ["안소니", "조 루소"],
            "cast": ["아이언맨", "타노스", "헐크"]
        }
    >>> dic_a
    {"director": ["안소니", "조 루소"],"cast": ["아이언맨", "타노스", "헐크"]}
    >>>dic_a["director"]
    ["안소니", "조 루소"]
  • 자주 발생 되는 실수
    # director, cast를 변수로 인식을 하여 오류 발생 함.
    >>> dic_a = {
            director: ["안소니", "조 루소"],
            cast: ["아이언맨", "타노스", "헐크"]
        }
        NameError: name 'director' is not defined
    >>> director = "감독"
    >>> cast = "배우"
    >>> dic_a = {
            director: ["안소니", "조 루소"],
            cast: ["아이언맨", "타노스", "헐크"]
        }
    >>> dic_a
    {"감독": ["안소니", "조 루소"],"배우": ["아이언맨", "타노스", "헐크"]}
    >>>dic_a["감독"]
    ["안소니", "조 루소"]

2.3 딕셔너리의 데이터 컨트롤

  • 값 추가 / 제거

    >>> dic_a = {
            "name": "7D 건조 망고",
            "type": "당절임",
            "ingredient": ["망고","설탕"],
            "origin": "필리핀"
        }
    # 새로운 키/값 추가
    >>> dic_a["price"] = 5000
    >>> print(dic_a)
    {'name': '7D 건조 망고', 'type': '당절임', 'ingredient': ['망고', '설탕'], 'origin': '필리핀', 'price': 5000}
    >>> del dic_a["ingredient"]
    >>> print(dic_a)
    {'name': '7D 건조 망고', 'type': '당절임', 'origin': '필리핀', 'price': 5000}
  • in 키워드

    • 존재 하지 않는 키에 접근 하기전 키가 있는지 확인 할 때 사용 할 수 있는 방법중 하나.

    • 리스트처럼 딕셔너리 내부에 키가 있는지 확인 할 수 있음.

      dic_a = {
          "name": "7D 건조 망고",
          "type": "당절임",
          "ingredient": ["망고","설탕"],
          "origin": "필리핀"
      }
      key_name = "name"
      
      if key_name in dic_a:
          print(dic_a[key_name])
      else:
          print("키가 없습니다.")
      # 결과값
      "7D 건조 망고"
  • get() 함수

    • 존재 하지않는 키를 딕셔너리[키]와 같이 접근 했을 때 KeyError가 발생 되지만 get() 했을 경우 KeyError가 아닌 None을 리턴 함.

      dic_a = {
          "name": "7D 건조 망고",
          "type": "당절임",
          "ingredient": ["망고","설탕"],
          "origin": "필리핀"
      }
      value = dic_a.get("존재하지 않는 키")
      print(value);
      # 결과값
      None
      
      # 아래와 같이 사용 할 수 있음.
      if value == None:
          print("키 없음.")

2.4 딕셔너리 데이터 순회

  • 리스트와 다르게 키 변수에 키값이 들어감.

    dic_a = {
        "name": "7D 건조 망고",
        "type": "당절임",
        "ingredient": ["망고","설탕"],
        "origin": "필리핀"
    }
    for key in dic_a:
        print(key, ":", dic_a[key])
    
    # 결과값
    
    name : 7D 건조 망고  
    type : 당절임  
    ingredient : ["망고","설탕"]
    origin : 필리핀

3. 범위 자료형

  • for 반복문과 함께 많이 사용 되는 자료형
  • 특정 횟수만큼 반복하고 싶을 때 for 반복문과 범위를 조합하여 사용 함.

3.1 사용 예

  • 매개변수에 숫자를 1 개 넣는 방법
    • range(A) ==> A는 숫자

      a = range(5)  
      print(a)  
      print(list(a))
      
      # 결과값
      
      range(0,5)  
      [0,1,2,3,4]
  • 매개변수에 숫자를 2 개 넣는 방법
    • range(A,B) ==> A, B는 숫자

      a = range(5,10)  
      print(a)  
      print(list(a))
      
      # 결과값
      
      range(5,10)  
      [5,6,7,8,9]
  • 매개변수에 숫자를 3 개 넣는 방법
    • range(A,B,C) ==> A,B,C는 숫자
    • A부터 B까지 C씩 증가 하는 정수 범위가 만들어짐.
      a = range(0,10,2)  
      print(list(a))
      # 결과값
      [0,2,4,6,8]

3.2 데이터 순회

  • 매개변수 1개

    for i in range(5):  
        print(str(i) + "= 반복변수")
    
    # 결과값
    
    0 = 반복변수  
    1 = 반복변수  
    2 = 반복변수  
    3 = 반복변수  
    4 = 반복변수
    
  • 매개변수 2개

    for i in range(5,10):
        print(str(i) + "= 반복변수")
    
    # 결과값
    
    5 = 반복변수
    6 = 반복변수
    7 = 반복변수
    8 = 반복변수
    9 = 반복변수
    
  • 매개변수 3개

    for i in range(0,10,3):
        print(str(i) + "= 반복변수")
    
    # 결과값
    
    0 = 반복변수
    3 = 반복변수
    6 = 반복변수
    9 = 반복변수
    
  • 리스트의 range 순회

    list_a = [1,2,3,4,5]
    
    # 리스트 길이를 범위로 지정함.
    
    for i in range(len(list_a)):  
        print("{}번째 반복: {}".format(i, array[i]))
    
    # 결과값
    
    0번째 반복: 1  
    1번째 반복: 2  
    2번째 반복: 3  
    3번째 반복: 4  
    4번째 반복: 5
    
  • 역 반복문

    list_a = [1,2,3,4,5]
    
    # 리스트 길이를 범위로 지정함.
    for i in reversed(range(len(list_a))):  
        print("{}번째 반복: {}".format(i, array[i]))
    
    # 결과값
    
    4번째 반복: 5  
    3번째 반복: 4  
    2번째 반복: 3  
    1번째 반복: 2  
    0번째 반복: 1
    

연습문제

  • 함수 하나씩 실행 했을 때
  • 문제의 함수를 연결 해서 실행 했을 때

'Python' 카테고리의 다른 글

혼공파 6주차  (0) 2020.08.14
혼공파 4주차  (0) 2020.07.31
혼공파 2주차  (0) 2020.07.17
혼공파 1주차  (0) 2020.07.09
Comments