Python でリストがソートされているか(任意の順序)を確認する方法

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python でリストが昇順または降順にソートされているかどうかを確認する方法を学びます。ソートされたリストの基本原理と、さまざまなプログラミングタスクでの使用方法を探索します。

この実験では、Python の組み込み関数を使用してリストを作成および操作する方法を案内します。sorted() 関数を使用して、既存のリストから昇順および降順の新しいソート済みリストを作成する方法を学びます。また、文字列のリストをソートする方法も紹介します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/conditional_statements -.-> lab-559535{{"Python でリストがソートされているか(任意の順序)を確認する方法"}} python/for_loops -.-> lab-559535{{"Python でリストがソートされているか(任意の順序)を確認する方法"}} python/lists -.-> lab-559535{{"Python でリストがソートされているか(任意の順序)を確認する方法"}} python/build_in_functions -.-> lab-559535{{"Python でリストがソートされているか(任意の順序)を確認する方法"}} python/data_collections -.-> lab-559535{{"Python でリストがソートされているか(任意の順序)を確認する方法"}} end

ソート済みリストの探索

このステップでは、Python のソート済みリストについて学びます。ソート済みリストは、検索、データ分析、アルゴリズムの最適化などのプログラミングタスクにおいて基本的な要素です。Python は、ソート済みリストを簡単に作成および操作するための組み込み関数とメソッドを提供しています。

まず、簡単な数値のリストを作成してみましょう。

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]
print(numbers)

上記のコードを ~/project ディレクトリに sort_list.py という名前のファイルに保存します。VS Code エディタを使用してこのファイルを作成することができます。

次に、ターミナルで以下のコマンドを使用してスクリプトを実行します。

python ~/project/sort_list.py

元のリストが出力されるはずです。

[5, 1, 4, 2, 8]

このリストをソートするには、sorted() 関数を使用することができます。sorted() 関数は、イテラブルの要素から新しいソート済みリストを返します。

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]

## Sort the list using the sorted() function
sorted_numbers = sorted(numbers)

## Print the sorted list
print(sorted_numbers)

sort_list.py ファイルを上記のコードを含むように変更します。そして、再度スクリプトを実行します。

python ~/project/sort_list.py

今度は、ソート済みのリストが出力されるはずです。

[1, 2, 4, 5, 8]

元の numbers リストは変更されていないことに注意してください。sorted() 関数は新しいソート済みリストを作成します。

リストを降順でソートしたい場合は、reverse パラメータを使用することができます。

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]

## Sort the list in descending order
sorted_numbers = sorted(numbers, reverse=True)

## Print the sorted list
print(sorted_numbers)

sort_list.py ファイルを上記のコードを含むように変更します。そして、再度スクリプトを実行します。

python ~/project/sort_list.py

降順でソートされたリストが出力されるはずです。

[8, 5, 4, 2, 1]

文字列のリストもソートすることができます。

## Create a list of strings
names = ["Alice", "Bob", "Charlie", "David"]

## Sort the list of strings
sorted_names = sorted(names)

## Print the sorted list
print(sorted_names)

sort_list.py ファイルを上記のコードを含むように変更します。そして、再度スクリプトを実行します。

python ~/project/sort_list.py

ソートされた名前のリストが出力されるはずです。

['Alice', 'Bob', 'Charlie', 'David']

文字列はアルファベット順にソートされます。

昇順または降順の確認

このステップでは、リストが昇順または降順にソートされているかどうかを確認する方法を学びます。これは、データ検証やアルゴリズム設計など、多くのプログラミングシナリオで一般的なタスクです。

リストがソートされているかどうかを判断するには、リストを反復処理して隣接する要素を比較することができます。各要素が次の要素以下であれば、リストは昇順にソートされています。各要素が次の要素以上であれば、リストは降順にソートされています。

まず、VS Code エディタを使用して ~/project ディレクトリに check_order.py という名前の Python スクリプトを作成しましょう。

以下は、リストが昇順にソートされているかどうかを確認するコードです。

def is_ascending(lst):
    for i in range(len(lst) - 1):
        if lst[i] > lst[i + 1]:
            return False
    return True

numbers = [1, 2, 3, 4, 5]
print(is_ascending(numbers))

numbers = [1, 3, 2, 4, 5]
print(is_ascending(numbers))

上記のコードを check_order.py に保存します。次に、以下のコマンドを使用してスクリプトを実行します。

python ~/project/check_order.py

以下の出力が表示されるはずです。

True
False

最初のリスト [1, 2, 3, 4, 5] は昇順にソートされているため、関数は True を返します。2 番目のリスト [1, 3, 2, 4, 5] は昇順にソートされていないため、関数は False を返します。

次に、リストが降順にソートされているかどうかを確認するコードを追加しましょう。

def is_descending(lst):
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            return False
    return True

numbers = [5, 4, 3, 2, 1]
print(is_descending(numbers))

numbers = [5, 2, 3, 2, 1]
print(is_descending(numbers))

上記のコードを check_order.py ファイルに追加します。完成した check_order.py ファイルは次のようになります。

def is_ascending(lst):
    for i in range(len(lst) - 1):
        if lst[i] > lst[i + 1]:
            return False
    return True

def is_descending(lst):
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            return False
    return True

numbers = [1, 2, 3, 4, 5]
print(is_ascending(numbers))

numbers = [1, 3, 2, 4, 5]
print(is_ascending(numbers))

numbers = [5, 4, 3, 2, 1]
print(is_descending(numbers))

numbers = [5, 2, 3, 2, 1]
print(is_descending(numbers))

再度スクリプトを実行します。

python ~/project/check_order.py

以下の出力が表示されるはずです。

True
False
True
False

リスト [5, 4, 3, 2, 1] は降順にソートされているため、関数は True を返します。リスト [5, 2, 3, 2, 1] は降順にソートされていないため、関数は False を返します。

この演習では、Python を使用してリストが昇順または降順にソートされているかどうかを確認する方法を示しています。

sorted() を使った比較

このステップでは、sorted() 関数を使って 2 つのリストを比較する方法を学びます。リストの比較は、特に 2 つのデータセットが同一であるか、あるいは一方のリストが他方の部分集合であるかを検証する必要がある場合など、プログラミングにおいて一般的なタスクです。

sorted() 関数は、比較する前に両方のリストをソートするために使用できます。これにより、要素の順序が比較結果に影響しないようになります。

VS Code エディタを使って、~/project ディレクトリに compare_lists.py という名前の Python スクリプトを作成しましょう。

以下は、sorted() 関数を使って 2 つのリストを比較するコードです。

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_a = [3, 1, 2]
list_b = [1, 2, 3]
print(compare_lists(list_a, list_b))

list_c = [3, 1, 2]
list_d = [1, 2, 4]
print(compare_lists(list_c, list_d))

上記のコードを compare_lists.py に保存します。次に、以下のコマンドを使ってスクリプトを実行します。

python ~/project/compare_lists.py

以下の出力が表示されるはずです。

True
False

リスト list_alist_b は同じ要素を含んでいるため、関数は True を返します。リスト list_clist_d は同じ要素を含んでいないため、関数は False を返します。

文字列の例を見てみましょう。

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_e = ["apple", "banana", "cherry"]
list_f = ["cherry", "apple", "banana"]
print(compare_lists(list_e, list_f))

list_g = ["apple", "banana", "cherry"]
list_h = ["apple", "banana", "date"]
print(compare_lists(list_g, list_h))

上記のコードを compare_lists.py ファイルに追加します。完成した compare_lists.py ファイルは次のようになります。

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_a = [3, 1, 2]
list_b = [1, 2, 3]
print(compare_lists(list_a, list_b))

list_c = [3, 1, 2]
list_d = [1, 2, 4]
print(compare_lists(list_c, list_d))

list_e = ["apple", "banana", "cherry"]
list_f = ["cherry", "apple", "banana"]
print(compare_lists(list_e, list_f))

list_g = ["apple", "banana", "cherry"]
list_h = ["apple", "banana", "date"]
print(compare_lists(list_g, list_h))

再度スクリプトを実行します。

python ~/project/compare_lists.py

以下の出力が表示されるはずです。

True
False
True
False

この例は、sorted() 関数を使って文字列のリストを比較する方法を示しています。

まとめ

この実験では、Python のソート済みリストを探索し、sorted() 関数を使って既存のリストから新しいソート済みリストを作成する方法を学びました。reverse パラメータを使って数値のリストを昇順と降順にソートする方法も見ました。

この実験では、sorted() を使用すると元のリストは変更されず、新しいソート済みリストが返されることを示しました。また、sorted() は文字列のリストにも適用できることを学びましたが、そのデモンストレーションは提供された内容が途中で途切れていました。