スライシングを使った逆順化
このステップでは、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]
を使ったスライシングが効果的にリストを逆順にすることを示しており、これを使って元のリストが回文(パリンドローム)かどうかを判断できます。