티스토리 뷰

📌 목차

    리스트 고급 활용

    리스트 요소의 합을 구하는 방법에는 다양한 방법이 있습니다.

    • 반복문 사용
    • SUM()함수 사용
    • 컴프리헨션 사용
    • 재귀함수 사용
    반복문을 사용하여 리스트 요소의 합 구하기
    numbers = [1, 2, 3, 4, 5]
    sum = 0
    for num in numbers:
        sum += num
    print(sum) #15

    sum 변수를 초기값 0으로 설정하고, for 반복문을 사용하여 numbers 리스트의 요소를 하나씩 가져옵니다. for 반복문에서 num 변수에는 numbers 리스트의 요소들이 차례대로 대입됩니다.

    반복문 내에서 sum 변수에 num 변수의 값을 더해주면서, 리스트의 모든 요소를 순회합니다.

    반복문이 끝나면, sum 변수에는 numbers 리스트의 모든 요소의 합이 저장됩니다. 마지막으로 print() 함수를 사용하여 sum 변수의 값을 출력합니다.

     

    sum() 함수를 사용하여 리스트 요소의 합 구하기
    numbers = [1, 2, 3, 4, 5]
    sum = sum(numbers)
    print(sum)


    sum() 함수를 사용하여 numbers 리스트의 요소들의 합을 구하는 것입니다.
    sum() 함수는 파이썬 내장 함수 중 하나로, 인수로 전달된 리스트의 요소들의 합을 계산하여 반환합니다.
    따라서, numbers 리스트를 sum() 함수에 전달하여 리스트의 모든 요소를 더한 값을 계산하고, 그 결과를 sum 변수에 저장합니다.

    .

    리스트 컴프리헨션을 사용하여 리스트 요소의 합 구하기
    numbers = [1, 2, 3, 4, 5]
    sum = sum([num for num in numbers])
    print(sum) #15

    위 예제는 리스트 컴프리헨션을 사용하여 numbers 리스트의 모든 요소를 포함한 리스트를 만들고, sum() 함수를 사용하여 그 합을 계산하는 방법을 보여줍니다. 이 예제는 반복문을 사용하는 것보다 더 간결하고 가독성이 좋습니다.

     

    재귀 함수를 사용하여 리스트 요소의 합 구하기
    def sum_list(lst):
        if len(lst) == 0:
            return 0
        else:
            return lst[0] + sum_list(lst[1:])
    
    numbers = [1, 2, 3, 4, 5]
    sum = sum_list(numbers)
    print(sum)

    재귀함수는 자기 자신을 호출하는 함수를 말합니다. 즉, 함수 내에서 자기 자신을 호출하여 문제를 해결하는 방법입니다.

    재귀 함수는 일반적으로 다음과 같은 구조를 가집니다.

    1. 종료 조건: 재귀 함수가 무한히 호출되지 않도록 멈추는 조건을 설정합니다. 이를 종료 조건이라고 합니다.
    2. 재귀 호출: 종료 조건이 충족되지 않으면 자기 자신을 호출하여 문제를 작은 단위로 분할합니다.
    3. 결과 반환: 최종적으로 문제를 해결한 값을 반환합니다.

    예를 들어, 1부터 n까지의 합을 구하는 함수를 재귀 함수로 구현해보겠습니다.

    def sum(n):
        if n == 1:  # 종료 조건
            return 1
        else:
            return n + sum(n-1)  # 재귀 호출 및 결과 반환
    
    print(sum(5))

    위 코드에서, sum() 함수는 n이 1일 때 종료되도록 설정되어 있습니다. 그렇지 않은 경우에는 n과 sum(n-1)의 합을 반환하는 재귀 호출이 이루어집니다.

    예를 들어, sum(5)를 호출하면 다음과 같은 일련의 과정이 수행됩니다.

    1. sum(5)를 호출합니다.
    2. n이 1이 아니므로 n과 sum(n-1)의 합인 sum(4)를 반환합니다.
    3. sum(4)를 호출합니다.
    4. n이 1이 아니므로 n과 sum(n-1)의 합인 sum(3)을 반환합니다.
    5. sum(3)을 호출합니다.
    6. n이 1이 아니므로 n과 sum(n-1)의 합인 sum(2)를 반환합니다.
    7. sum(2)를 호출합니다.
    8. n이 1이 아니므로 n과 sum(n-1)의 합인 sum(1)을 반환합니다.
    9. sum(1)을 호출합니다.
    10. n이 1이므로 1을 반환합니다.
    11. sum(1)의 반환값인 1과 sum(2)의 반환값인 3을 더한 값인 4를 반환합니다.
    12. sum(4)의 반환값인 10과 sum(3)의 반환값인 6을 더한 값인 16을 반환합니다.
    13. sum(5)의 반환값인 16과 5를 더한 값인 21을 반환합니다.

    따라서, sum(5)의 결과는 21입니다.

    간단하게 말하면, 재귀 함수는 자기 자신을 호출하여 문제를 작은 단위로 분할하고 해결하는 함수입니다. 종료 조건을 설정하여 재귀 호출이 무한히 반복되지 않도록 주의해야 합니다.

     

    재귀 함수는 많은 곳에서 사용됩니다. 예를 들면 다음과 같은 경우가 있습니다.

    1. 자료구조 탐색: 재귀 함수를 사용하여 트리, 그래프, 리스트 등의 자료구조를 탐색하는 경우가 있습니다. 예를 들어, 파일 시스템에서 디렉토리를 순회하거나, 미로 찾기 문제를 해결할 때 재귀 함수를 사용할 수 있습니다.
    2. 수학적 계산: 재귀 함수를 사용하여 수학적 계산을 수행하는 경우가 있습니다. 예를 들어, 피보나치 수열을 계산하거나, 팩토리얼을 계산할 때 재귀 함수를 사용할 수 있습니다.
    3. 알고리즘 구현: 재귀 함수를 사용하여 알고리즘을 구현하는 경우가 있습니다. 예를 들어, 분할 정복 알고리즘에서는 재귀 함수를 사용하여 문제를 작은 단위로 분할하고 해결합니다.
    4. 문제 해결: 재귀 함수를 사용하여 복잡한 문제를 해결하는 경우가 있습니다. 예를 들어, 하노이의 탑 문제를 해결하는 경우에는 재귀 함수를 사용할 수 있습니다.

    즉, 재귀 함수는 어떤 문제가 작은 단위로 쪼개어질 수 있고, 이 작은 문제들이 모여서 큰 문제를 해결할 수 있는 경우에 사용됩니다. 재귀 함수를 사용하면 코드가 간결해지고 가독성이 좋아질 수 있습니다. 그러나 종료 조건이 잘못 설정될 경우 무한히 재귀 호출이 반복될 수 있으므로 주의가 필요합니다.

     

    리스트 컴프리헨션 필터사용 (리스트, for, if)

    리스트를 필터링하여 원하는 항목만 선택할 수 있습니다. 

    예를 들어, 다음 코드는 주어진 리스트에서 0 이상 5 미만인 정수만 선택합니다.

    numbers = [1, 5, -2, 0, 6, 7, -3]
    filtered_numbers = [x for x in numbers if 0 <= x < 5]
    print(filtered_numbers) #[1, 0]