Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストが回文(パリンドローム)かどうかを判定する方法

Pythonでは、リストが回文(前から読んでも後ろから読んでも同じ並び)であるかどうかを簡単に判定できます。本記事では、文字列を反転させて元の文字列と比較するメソッドを定義し、その結果に応じてコンソールにメッセージを表示する方法を解説します。処理にはリスト内包表記と join メソッドを使用します。

サンプルコード

以下が実際の実装例です。

def check_palindrome_list(my_str):
   if my_str == my_str[::-1]:
      print("The list is a palindrome")
   else:
      print("The list isn't a palindrome")

my_list = [77, 1, 56, 65, 1, 77]

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

my_list = ' '.join([str(elem) for elem in my_list])
check_palindrome_list(my_list)

実行結果

The list is :
[77, 1, 56, 65, 1, 77]
The list is a palindrome

コードの解説

  • まず、check_palindrome_list という名前のメソッドを定義します。このメソッドは文字列を引数として受け取ります。

  • スライス記法 [::-1] を使って文字列を反転させ、元の文字列と比較します。

  • 比較結果に応じて、「回文である」または「回文ではない」というメッセージをコンソールに表示します。

  • メソッドの外側で整数のリストを定義し、コンソールに出力して内容を確認できるようにしています。

  • リスト内包表記で各要素を文字列に変換したうえで、join メソッドを使って要素を連結し、ひとつの文字列にまとめます。

  • 最後に、変換した文字列を引数としてメソッドを呼び出し、判定結果を出力します。

ポイント

数値のリストをそのまま比較することも可能ですが、この例では一度文字列に変換してから判定を行っています。スライス [::-1] はリストや文字列を手軽に逆順にできる便利な記法なので、回文判定以外にもさまざまな場面で活用できます。また、より簡潔に書きたい場合は、以下のように関数を boolean を返す形にすることもできます。

def is_palindrome(seq):
   return seq == seq[::-1]

  1. Pythonのcmp()関数とは?2つの整数を比較する方法をわかりやすく解説

    cmp()関数とはcmp()は、2つの整数を比較するためのPython標準ライブラリの関数です。比較結果は以下の3パターンで返されます。最初の整数が2番目より小さい場合:-1最初の整数が2番目より大きい場合:1両者が等しい場合:0なお、組み込み関数のcmp()はPython 3で廃止されました。そのため本記事では、同じ挙動を再現する独自関数を定義し、その使い方を紹介します。実装は非常にシンプルで、PythonではTrueが1、Falseが0として扱われる性質を利用した「(x > y) - (x < y)」という式で実現できます。サンプルコード次の例では、x>y、x<y、

  2. 【Python】リンクリストが回文かどうかを判定するアルゴリズム

    回文リンクリストとはリンクリスト(連結リスト)が与えられたとき、その要素が回文(前から読んでも後ろから読んでも同じ並び)になっているかどうかを判定する問題です。例えば、リストの要素が [1,2,3,2,1] のような場合は回文であるため True を返し、[1,2,3] のような場合は回文ではないため False を返します。アルゴリズムの手順この問題は、fast / slow の2つのポインタを使ってリストの中央を特定し、前半部分を逆順に反転させたうえで後半部分と比較することで、追加メモリなしに O(n) 時間で解くことができます。fast := head、slow := head、rev