재형이의 성장통 일지
  • 리스트, 튜플, 딕셔너리, 집합, 불, 조건문, 반복문
    2024년 02월 08일 07시 14분 25초에 업로드 된 글입니다.
    작성자: 재형이
    반응형
     
     
    • 내일이 벌써 설날이다
    • 오늘은 일찍 퇴근시켜줄 것 같다 그래서 기분이 좋다ㅎㅎ
    • 친구를 도와서 게임을 같이 만들고 있는데 새로운 서비스들을 적용시켜보려고 하니 너무 재밌다
    • 는 다시 본론으로 돌아와서 파이썬 자료형 마무리하고 조건문, 반복문 Let's Go~

     
     


     
     
     
     

    1. 파이썬(Python) 리스트 자료형과 튜플 자료형

    1-1. 리스트 자료형

    • 리스트는 대괄호 안에 원소들을 쉼표로 구분하여 넣을 수 있다
    • 일반적으로 리스트의 각 원소는 같은 자료형이도록 쓰지만, 서로 다른 자료형의 데이터가 들어갈 수 있다
    data = ["Hello", 7, 0.5]
    
    print(data)
    # ['Hello', 7, 0.5]
    • 리스트에 대해서 인덱싱과 슬라이싱을 사용할 수 있다
    evens = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
    
    print(evens[3]) # 4번째 원소
    print(evens[0:5]) # 1번째 원소부터 5번째 원소까지
    # 8
    # [2, 4, 6, 8, 10]
    • 리스트 덧셈: 리스트끼리 더할 수 있는데, 이때는 단순히 두 리스트를 이어 붙인 결과가 반환된다
    a = [1, 2, 3, 4, 5]
    b = [6, 7, 8, 9, 10]
    
    print(a + b)
    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    • 리스트 중첩: 리스트는 다중(2중, 3중 등)으로 중첩하여 사용할 수 있다
    arr = [
        [1, 2, 3, 4, 5],
        [6, 7, 8, 9, 10],
        [11, 12, 13, 14, 15]
    ]
    
    print(arr) # 리스트 전체 출력
    print(arr[0][1]) # 1행 2열의 원소 출력
    print(arr[2][2]) # 3행 3열의 원소 출력
    # [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
    # 2
    # 13
    • 리스트의 요소에 접근하여 값을 변경할 수 있다
    a = [5, 6, 7, 8, 9]
    
    a[4] = 5
    print(a)
    
    a[0] = 1
    print(a)
    
    a[1:4] = [2, 3, 4] # 특정 구간을 한꺼번에 바꾸기
    print(a)
    # [5, 6, 7, 8, 5]
    # [1, 6, 7, 8, 5]
    # [1, 2, 3, 4, 5]
    • 리스트 메서드
      • insert(삽입할 인덱스, 삽입할 원소): 리스트에 원소를 삽입한다
      • append(삽입할 원소): 리스트의 마지막 위치에 원소를 삽입한다
      • remove(삭제할 원소): 리스트에서 특정한 값을 가지는 원소를 삭제한다
      • sort(): 리스트의 원소를 정렬한다
    arr = [1, 3, 4] # 리스트 변수 초기화
    print(arr)
    
    arr.insert(1, 2) # 인덱스 1의 위치에 원소 2를 삽입
    print(arr)
    
    arr.append(5) # 마지막 위치에 5를 삽입
    print(arr)
    
    arr.remove(3) # 원소 3을 제거
    print(arr)
    
    arr.sort() # 오름차순 정렬
    print(arr)
    
    arr.sort(reverse=True) # 내림차순 정렬
    print(arr)
    # [1, 3, 4]
    # [1, 2, 3, 4]
    # [1, 2, 3, 4, 5]
    # [1, 2, 4, 5]
    # [1, 2, 4, 5]
    # [5, 4, 2, 1]
    • 2차원 이상의 리스트를 초기화할 때는 리스트 컴프리헨션(list comprehension)을 사용한다
    # 원소를 8개 포함하는 1차원 리스트 초기화
    arr = [5] * 8
    print(arr)
    
    # 4 X 5 크기를 갖는 2차원 리스트 초기화
    arr = [[0] * 5 for _ in range(4)]
    print(arr)
    
    # 4 X 5 크기를 갖는 2차원 리스트 초기화
    arr = [[i] * 5 for i in range(4)]
    print(arr)
    
    # 4 X 5 크기를 갖는 2차원 리스트 초기화
    arr = [[(i * 5) + j for j in range(5)] for i in range(4)]
    print(arr)
    # [5, 5, 5, 5, 5, 5, 5, 5]
    # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
    # [[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]]
    # [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]

    1-2. 튜플 자료형

    • 튜플(tuple) 자료형은 리스트와 유사하지만, 그 특징이 조금씩 다르다
    • 리스트는 대괄호 []를 이용하지만, 튜플은 소괄호 ()을 사용한다
    • 리스트는 값을 변경할 수 있지만, 튜플은 값을 변경할 수 없다
    • 값이 변경되면 안 되는 경우, 튜플을 사용하면 효과적이다
    • 관행적으로, 각 데이터의 성질이 다를 수 있을 때 일반적으로 튜플을 사용한다
    • 예시) 최단 경로 알고리즘에서 (비용, 노드 번호) 형태로 데이터를 묶어 사용하곤 한다
    # 튜플은 리스트와 사용 방법이 유사하다.
    a = (1, 2, 3, 4, 5)
    print(a)
    print(a[:3])
    print(a * 2)
    
    b = (6, 7, 8, 9, 10)
    print(a + b) # 두 튜플(tuple)을 더한 값 출력
    # (1, 2, 3, 4, 5)
    # (1, 2, 3)
    # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
    # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    2. 파이썬(Python) 딕셔너리 자료형과 집합 자료형

    1. 딕셔너리(Dictionary) 자료형

    • 데이터를 키(key)와 값(value) 쌍의 형태로 저장할 때 사용할 수 있다
    • 딕셔너리에 키와 값을 입력할 때는 "사전 데이터[키] = 값" 과 같은 형태로 입력할 수 있다
    arr1 = ["컴퓨터", "키보드", "모니터"]
    arr2 = ["computer", "keyboard", "monitor"]
    
    data = {}
    for i in range(3):
        data[arr1[i]] = arr2[i]
    print(data)
    # {'컴퓨터': 'computer', '키보드': 'keyboard', '모니터': 'monitor'}
    • 모든 키(key)를 하나씩 확인할 때는 keys() 메서드를 사용할 수 있다
    data = {}
    data['apple'] = "사과"
    data["banana"] = "바나나"
    data["carrot"] = "당근"
    
    for key in data.keys():
        print("key:", key, ", value:", data[key])
    # key: apple , value: 사과
    # key: banana , value: 바나나
    # key: carrot , value: 당근
    • 사전 자료형은 특정한 데이터의 등장 횟수를 셀 때 효과적으로 사용할 수 있다
    data = [1, 3, 3, 5, 4, 3, 1, 4]
    counter = {}
    
    for x in data:
        if x not in counter:
            counter[x] = 1
        else:
            counter[x] += 1
    print(counter)
    # {1: 2, 3: 3, 5: 1, 4: 2}

    2. 집합(Set) 자료형

    • 데이터의 중복을 허용하지 않고, 순서가 상관없을 때 사용하는 자료형이다
    • 특정한 데이터가 등장한 적 있는지 체크할 때 효과적으로 사용된다
    • 데이터를 삽입할 때는 add() 메서드를 사용한다
    data = [1, 3, 3, 5, 4, 3, 1, 4]
    visited = set()
    
    for x in data:
        if x not in visited:
            visited.add(x)
        else:
            print("중복 원소 발견:", x)
    
    print("고유한 원소들:", visited)
    # 중복 원소 발견: 3
    # 중복 원소 발견: 3
    # 중복 원소 발견: 1
    # 중복 원소 발견: 4
    # 고유한 원소들: {1, 3, 4, 5}
    • 집합 자료형은 remove() 메서드를 사용하여 원소를 제거할 수 있다
    • 집합 자료형 list() 함수를 이용하여 리스트로 변경할 수 있다
    data = {5, 6, 7, 8, 9}
    print(data)
    
    data.remove(7)
    print(data)
    
    arr = list(data)
    print(arr)
    # {5, 6, 7, 8, 9}
    # {5, 6, 8, 9}
    # [5, 6, 8, 9]
    • 집합 자료형은 다양한 연산자를 제공한다.
      • 합집합 연산자: |
      • 교집합 연산자: &
      • 차집합 연산자: -
    data1 = {3, 4, 5, 6, 7}
    data2 = {6, 7, 8, 9, 10}
    
    data = data1 | data2 # 합집합
    print(data)
    
    data = data1 & data2 # 교집합
    print(data)
    
    data = data1 - data2 # 차집합
    print(data)
    # {3, 4, 5, 6, 7, 8, 9, 10}
    # {6, 7}
    # {3, 4, 5}

    3. 파이썬(Python) 참/거짓 자료형 - 불(bool)

    • 불(bool) 자료형은 참(true)과 거짓(false)을 표현하기 위해 사용한다
      • 참(True): 경우에 따라서 1로 표현하기도 한다
      • 거짓(False): 경우에 따라서 0로 표현하기도 한다
    • 파이썬(python) 자료형은 참과 거짓이 나누어진다
      • 거짓(False): 0, 비어있는 리스트/튜플/사전, None 등
      • 참(True): 이외에 실제 의미 있는 값들
    print(bool(7))
    print(bool(1))
    print(bool(0))
    print(bool("Hello World"))
    print(bool(""))
    print(bool([1, 2, 3]))
    print(bool([]))
    print(bool(()))
    # True
    # True
    # False
    # True
    # False
    # True
    # False
    # False
    • 논리 연산자를 사용하면, 불(bool) 자료형에 대한 연산이 가능하다
      • x or y: x와 y 중에 하나라도 참일 때 참(True), 아니면 거짓(False)
      • x and y: x와 y가 모두 참일 때 참(True), 아니면 거짓(False)
      • not x: x가 참일 때 거짓(False), 거짓이면 참(True)
      • x in arr: x가 arr 안에 포함될 때 참(True), 아니면 거짓(False)
      • x not in arr: x가 arr 안에 포함되지 않을 때 참(True), 아니면 거짓(False)
    a = True
    b = False
    
    print(a or b)
    print(a and b)
    print(not b)
    print(7 in [3, 5, 7])
    print(8 not in [2, 4, 6, 8])
    # True
    # False
    # True
    # True
    # False

    4. 파이썬(Python) 조건문

    • Python에서는 프로그램을 제어하기 위한 문법으로 조건문과 반복문을 제공한다
    • if 조건식:
          # 참인 경우 실행할 코드
      else:
          # 거짓인 경우 실행할 코드
    • if에 해당하지 않는다면 elif가 수행되고, 위쪽에 있는 모든 조건문에 해당하지 않을 때 else 구문이 실행된다
      • 전체 형태는 if ~ elif ~ else 형태로 사용된다
      • 이때 elif나 else는 옵션으로, 없어도 되는 키워드이다
    score = 90
    
    if score >= 94: # 94점부터 100점
        print('1등급입니다.')
    elif score >= 87: # 93점부터 87점
        print('2등급입니다.')
    elif score >= 81: # 86점부터 81점
        print('3등급입니다.')
    else:
        print('3등급 미만입니다.')
    # 2등급입니다.

    5. 파이썬(Python) 반복문

    • 프로그램에서 반복적인 작업을 수행해야 할 때, 반복문을 사용한다
    • for 원소 in 시퀀스 데이터:
          원소를 처리하는 코드
    • for 문법은 range()와 함께 사용할 수 있다.
      • range(start, end)
    result = 0
    for i in range(1, 51): # 1부터 50까지 방문
        result += i
    
    print(result)
    # 1275
    • enumerate() 함수를 사용하면 인덱스와 함께 반복할 수 있다
    name_list = ['홍길동', '이순신', '장보고']
    
    for i, element in enumerate(name_list):
        print(i, element)
    # 0 홍길동
    # 1 이순신
    # 2 장보고
    • 반복문은 중첩해서 사용할 수도 있다
    # 구구단
    for i in range(1, 10):
        for j in range(1, 10):
            print(i, "X", j, "=", i * j)
    # 1 X 1 = 1
    # 1 X 2 = 2
    # 1 X 3 = 3
    # 1 X 4 = 4
    # 1 X 5 = 5
    # 1 X 6 = 6
    # 1 X 7 = 7
    # 1 X 8 = 8
    # 1 X 9 = 9
    # 2 X 1 = 2
    # 2 X 2 = 4
    # 2 X 3 = 6
    # 2 X 4 = 8
    # 2 X 5 = 10
    # 2 X 6 = 12
    # 2 X 7 = 14
    # 2 X 8 = 16
    # 2 X 9 = 18
    # 3 X 1 = 3
    # 3 X 2 = 6
    # 3 X 3 = 9
    # 3 X 4 = 12
    # 3 X 5 = 15
    # 3 X 6 = 18
    # 3 X 7 = 21
    # 3 X 8 = 24
    # 3 X 9 = 27
    # 4 X 1 = 4
    # 4 X 2 = 8
    # 4 X 3 = 12
    # 4 X 4 = 16
    # 4 X 5 = 20
    # 4 X 6 = 24
    # 4 X 7 = 28
    # 4 X 8 = 32
    # 4 X 9 = 36
    # 5 X 1 = 5
    # 5 X 2 = 10
    # 5 X 3 = 15
    # 5 X 4 = 20
    # 5 X 5 = 25
    # 5 X 6 = 30
    # 5 X 7 = 35
    # 5 X 8 = 40
    # 5 X 9 = 45
    # 6 X 1 = 6
    # 6 X 2 = 12
    # 6 X 3 = 18
    # 6 X 4 = 24
    # 6 X 5 = 30
    # 6 X 6 = 36
    # 6 X 7 = 42
    # 6 X 8 = 48
    # 6 X 9 = 54
    # 7 X 1 = 7
    # 7 X 2 = 14
    # 7 X 3 = 21
    # 7 X 4 = 28
    # 7 X 5 = 35
    # 7 X 6 = 42
    # 7 X 7 = 49
    # 7 X 8 = 56
    # 7 X 9 = 63
    # 8 X 1 = 8
    # 8 X 2 = 16
    # 8 X 3 = 24
    # 8 X 4 = 32
    # 8 X 5 = 40
    # 8 X 6 = 48
    # 8 X 7 = 56
    # 8 X 8 = 64
    # 8 X 9 = 72
    # 9 X 1 = 9
    # 9 X 2 = 18
    # 9 X 3 = 27
    # 9 X 4 = 36
    # 9 X 5 = 45
    # 9 X 6 = 54
    # 9 X 7 = 63
    # 9 X 8 = 72
    # 9 X 9 = 81
    • 중첩 반복문으로 소수 판별 알고리즘 구현해보기
    n = 10
    for x in range(2, n + 1):
        prime_number = True
        for y in range(2, x):
            if x % y == 0: # 나누어 떨어지는 수가 있다면
                print(x, "=", y, "*", x // y)
                prime_number = False
                break # 반복문 탈출
        if prime_number:
            print(x, "은(는) 소수입니다.")
    # 2 은(는) 소수입니다.
    # 3 은(는) 소수입니다.
    # 4 = 2 * 2
    # 5 은(는) 소수입니다.
    # 6 = 2 * 3
    # 7 은(는) 소수입니다.
    # 8 = 2 * 4
    # 9 = 3 * 3
    # 10 = 2 * 5

     
     
     
     
     


     
     
     
     
     

    반응형
    댓글