Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

리스트에서 겹치는 연속 숫자의 합을 구하는 파이썬 프로그램

리스트 안에서 서로 겹치는(circular) 연속 숫자들의 합을 구해야 할 때는 리스트 컴프리헨션, 슬라이싱, 연결 연산자(+), 그리고 zip() 함수를 조합하면 단 몇 줄의 코드로 간단하게 처리할 수 있습니다.

예제 코드

아래는 실제 동작 과정을 보여주는 예제입니다.

my_list = [41, 27, 53, 12, 29, 32, 16]

print("The list is :")
print(my_list)

my_result = [a + b for a, b in zip(my_list, my_list[1:] + [my_list[0]])]

print("The result is :")
print(my_result)

출력 결과

The list is :
[41, 27, 53, 12, 29, 32, 16]
The result is :
[68, 80, 65, 41, 61, 48, 57]

코드 설명

  • 정수로 이루어진 리스트를 정의한 뒤 콘솔에 출력합니다.
  • my_list[1:]은 첫 번째 요소를 제외한 나머지 부분이며, 여기에 [my_list[0]]을 '+' 연산자로 연결하면 첫 번째 요소가 맨 뒤로 이동한 순환(circular) 형태의 새로운 리스트가 만들어집니다.
  • zip() 함수는 원본 리스트와 이렇게 회전시킨 리스트를 요소별로 짝지어 주기 때문에, 인접한 두 요소의 쌍뿐 아니라 마지막 요소와 첫 번째 요소의 쌍까지 모두 생성됩니다.
  • 리스트 컴프리헨션이 각 쌍(a, b)을 순회하면서 a + b를 계산합니다.
  • 계산 결과는 새로운 리스트로 변환되어 변수에 할당되고, 최종적으로 콘솔에 출력됩니다.

핵심 포인트

이 방식의 가장 큰 장점은 별도의 반복문이나 인덱스 계산 없이 한 줄의 표현식만으로 순환형 인접 합을 구할 수 있다는 점입니다. 만약 마지막 요소와 첫 번째 요소를 묶는 것이 필요 없다면, 회전 부분인 + [my_list[0]]을 제외하고 zip(my_list, my_list[1:]) 형태로 작성하면 됩니다.