소개
이 랩에서는 Python 에서 리스트가 회문 (palindrome) 인지 확인하는 방법을 배우게 됩니다. 회문은 앞뒤로 똑같이 읽히는 시퀀스입니다. 이 랩은 리스트 회문을 식별하는 Python 스크립트를 만드는 과정을 안내합니다.
슬라이싱을 사용하여 리스트를 뒤집힌 버전과 비교하는 방법과, 명시적으로 리스트를 뒤집어 비교하는 두 가지 방법을 살펴보겠습니다. 이 랩에서는 주어진 리스트가 회문인지 여부를 보여주는 스크립트를 실행하고 출력을 해석하는 방법에 대한 코드 예제와 지침을 제공합니다.
리스트 회문 이해하기
이 단계에서는 리스트 회문 (list palindrome) 에 대해 배우고 Python 에서 이를 식별하는 방법을 배우게 됩니다. 회문은 앞뒤로 똑같이 읽히는 시퀀스입니다. 예를 들어, "madam"이라는 단어는 회문입니다. 리스트의 맥락에서, 리스트 회문은 처음부터 끝까지 또는 끝에서부터 처음까지 읽을 때 요소가 동일한 리스트입니다.
리스트 회문을 탐구하기 위해 Python 스크립트를 만들어 보겠습니다.
VS Code 편집기를 엽니다.
~/project디렉토리에palindrome.py라는 새 파일을 만듭니다.touch ~/project/palindrome.py편집기에서
palindrome.py파일을 엽니다.
이제 리스트가 회문인지 확인하는 방법을 이해하기 위해 palindrome.py 파일에 코드를 추가해 보겠습니다.
def is_palindrome(lst):
return lst == lst[::-1]
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
이 코드에서:
- 리스트
lst를 입력으로 받는 함수is_palindrome(lst)를 정의합니다. - 함수 내부에서 슬라이싱
lst[::-1]을 사용하여 리스트를 뒤집힌 버전과 비교합니다. - 리스트가 회문이면 함수는
True를 반환하고, 그렇지 않으면False를 반환합니다. - 회문인
list1과 그렇지 않은list2의 두 가지 예시 리스트를 만듭니다. print()함수를 사용하여 각 리스트가 회문인지 여부를 표시합니다.
스크립트를 실행하려면 터미널에서 다음 명령을 실행합니다.
python ~/project/palindrome.py
다음 출력을 볼 수 있습니다.
[1, 2, 3, 2, 1] is a palindrome: True
[1, 2, 3, 4, 5] is a palindrome: False
이 출력은 list1이 회문이고 list2는 그렇지 않음을 확인합니다.
뒤집힌 리스트와 비교
이 단계에서는 리스트를 명시적으로 뒤집고 이를 원래 리스트와 비교하여 리스트가 회문인지 확인하는 또 다른 방법을 살펴보겠습니다. 이 접근 방식은 회문 검사에 대한 보다 자세한 이해를 제공합니다.
이전 단계에서 생성한 palindrome.py 파일을 수정해 보겠습니다.
VS Code 편집기에서
palindrome.py파일을 엽니다.palindrome.py파일의 내용을 다음과 같이 수정합니다.
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
이 수정된 코드에서:
is_palindrome(lst)함수 내부에서 슬라이싱lst[::-1]을 사용하여 입력 리스트lst의 뒤집힌 복사본을 만들고 이를reversed_lst변수에 저장합니다.- 그런 다음, 등가 연산자
==를 사용하여 원래 리스트lst를 뒤집힌 리스트reversed_lst와 비교합니다. - 원래 리스트가 뒤집힌 리스트와 같으면 (즉, 회문이면) 함수는
True를 반환하고, 그렇지 않으면False를 반환합니다.
스크립트를 실행하려면 터미널에서 다음 명령을 실행합니다.
python ~/project/palindrome.py
이전 단계와 동일한 출력을 볼 수 있습니다.
[1, 2, 3, 2, 1] is a palindrome: True
[1, 2, 3, 4, 5] is a palindrome: False
이 출력은 명시적 뒤집기 방법을 사용하여 list1이 회문이고 list2는 그렇지 않음을 확인합니다. 이 접근 방식은 로직을 더 명시적으로 만들고 이해하기 쉽게 합니다.
슬라이싱을 이용한 리스트 뒤집기
이 단계에서는 Python 에서 리스트를 뒤집기 위해 슬라이싱이 어떻게 사용되는지에 중점을 둡니다. 슬라이싱은 리스트의 일부를 추출할 수 있는 강력한 기능이며, 리스트의 뒤집힌 복사본을 만드는 데에도 사용할 수 있습니다.
palindrome.py 파일을 다시 살펴보고 슬라이싱 기술을 자세히 살펴보겠습니다.
VS Code 편집기에서
palindrome.py파일을 엽니다.palindrome.py파일의 내용이 다음과 같은지 확인합니다.
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
이 코드의 핵심 부분은 lst[::-1]입니다. 이것은 리스트의 뒤집힌 복사본을 만드는 슬라이싱 연산입니다. 자세히 살펴보겠습니다.
lst[:]는 전체 리스트의 복사본을 만듭니다.lst[start:end]는 인덱스start에서end-1까지의 슬라이스를 만듭니다.lst[start:end:step]을 사용하면step을 지정할 수 있습니다.step이-1이면 리스트를 뒤로 반복합니다.start와end를 생략하고step을-1로 사용하면 (즉,lst[::-1]) 전체 리스트의 뒤집힌 복사본을 만듭니다.
이를 더 자세히 설명하기 위해 슬라이싱의 효과를 확인하기 위해 몇 가지 print 문을 추가해 보겠습니다.
def is_palindrome(lst):
reversed_lst = lst[::-1]
print(f"Original list: {lst}")
print(f"Reversed list: {reversed_lst}")
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
이제 스크립트를 다시 실행합니다.
python ~/project/palindrome.py
회문 검사 결과 전에 원래 리스트와 뒤집힌 리스트가 출력되는 것을 볼 수 있습니다.
Original list: [1, 2, 3, 2, 1]
Reversed list: [1, 2, 3, 2, 1]
[1, 2, 3, 2, 1] is a palindrome: True
Original list: [1, 2, 3, 4, 5]
Reversed list: [5, 4, 3, 2, 1]
[1, 2, 3, 4, 5] is a palindrome: False
이것은 [::-1]을 사용한 슬라이싱이 어떻게 효과적으로 리스트를 뒤집고, 이를 사용하여 원래 리스트가 회문인지 여부를 결정하는지 보여줍니다.
요약
이 Lab 에서는 Python 에서 앞뒤로 동일하게 읽히는 리스트인 회문을 식별하는 방법을 배웠습니다. 슬라이싱 (lst[::-1]) 을 사용하여 리스트를 효율적으로 뒤집고 원래 리스트와 비교하여 회문이면 True를 반환하고 그렇지 않으면 False를 반환하는 is_palindrome(lst) 함수를 포함하는 palindrome.py 스크립트를 만들었습니다.
스크립트는 두 개의 예제 리스트, list1 (회문) 과 list2 (회문 아님) 로 테스트되었으며, 출력 결과는 함수의 회문 식별 능력을 확인했습니다. 또한 이 Lab 에서는 비교를 위해 리스트를 명시적으로 뒤집는 개념을 소개했지만, 제공된 내용은 잘렸습니다.



