Python で循環リストを使用する

Olorunfemi Akinlua 2023年6月21日
  1. itertools.cycle を使用して Python で循環リストを使用する
  2. generators を使用して Python で循環リストを使用する
Python で循環リストを使用する

通常のリンクされたリストにはルート ノードがあり、各ノードには次のノードへのポインターと、次のノードを持たない (つまり Null 値を保持する) 最後のノードを除くデータの一部があります。 最後のノード。 ただし、循環リンク リストでは、最後のノードには、リスト内の最初のノードへのポインタがあります。

したがって、循環リンクリストは、構造内のすべてのノードが円を形成するように構造化されたリンクリストです。 ノードが None にならないこの線形で動的なデータ構造。 最後のノードが最初のノードに接続されているため、すべてのノードが前または次のノードにつながることができます。

通常、iterator オブジェクトを使用すると、リストまたは辞書のデータ構造内で、ある要素から別の要素に移動できます。 循環リストでは、各ノード間の接続により、特に組み込み関数を使用してそれが可能になります。

この記事では、循環リストを Python でネイティブに、またはモジュールを使用して実装および使用する方法について説明します。

itertools.cycle を使用して Python で循環リストを使用する

Python には itertools と呼ばれる組み込みモジュールがあり、イテレータと関数ループを使用したシーケンスを有効にします。 このモジュール内で、反復子 (メソッド) は、短い入力シーケンスから組み合わせシナリオまで、さまざまなコンテキストにわたってループする効率的なシステムを構築するのに役立ちます。

ただし、使用するより重要なのは、cycle() イテレータです。これは、リストを受け取り、それを無限に反復する無限イテレータです。

これは、要素を返し、イテラブルから各要素をコピーするイテレータを作成することによって発生します。 その後、 iterable が終了した後、保存されたコピーからアイテムを返します。

モジュール itertools とメソッド cycle() を使用するには、次の import ステートメントを使用します。

from itertools import cycle

ここから行う必要があるのは、cycle() メソッドにリストを渡すことだけで、循環リンク リストが作成されます。 さらに、組み込み関数 next() を使用して、反復子から次の要素またはノードにアクセスして返すことができます。これは循環リンク リストです。

from itertools import cycle

numList = ["one", "two", "three", "four", "five"]

circularList = cycle(numList)

print(next(circularList))
print(next(circularList))

出力:

one
two

したがって、next() メソッドを使用すると、永遠にループする for ループを使用する代わりに、反復子を 1つずつ簡単に進めることができます。

from itertools import cycle

numList = ["one", "two", "three", "four", "five"]

circularList = cycle(numList)

for num in circularList:
    print(num)

出力:

one
two
three
four
five
one
two
three
four

generators を使用して Python で循環リストを使用する

ジェネレーターを使用すると、反復可能な反復子を返す反復と関数を作成できます。 return ステートメントを使用する典型的な関数とは異なり、generators では yield ステートメントを使用します。

return ステートメントとは異なり、yield ステートメントは関数を一時停止し、すべての環境変数 (または状態) を保存し、その後の呼び出しで 1つ続けて実行します。 さらに、generator 関数には return ステートメントと複数の yield ステートメントを含めることができます。

循環リストを作成するには、yield ステートメントを使用して関数の状態を保存し、連続する呼び出しを待機します。

def circular(args):
    while True:
        for element in args:
            yield element


numList = ["one", "two", "three", "four", "five"]

circularList = circular(numList)
print(circularList)

出力:

<generator object circular at 0x0000018AFFD39A10>

generator 関数と呼ばれる circular() を使用すると、反復可能な引数を渡すことができます。 while True ステートメントを使用して永遠にループしますが、関数を一時停止して現在の状態 (現在の要素またはノードがオンになっていることを意味します) を返し、別の呼び出しが行われたときに続行することができます。

これは、循環リストを作成するのに役立ちます。

next() メソッドを使用して、循環リスト内の次の要素を取得できます。

def circular(args):
    while True:
        for element in args:
            yield element


numList = ["one", "two", "three", "four", "five"]

circularList = circular(numList)

print(next(circularList))
print(next(circularList))

出力:

one
two

または無限にループします。

def circular(args):
    while True:
        for element in args:
            yield element


numList = ["one", "two", "three", "four", "five"]

circularList = circular(numList)

for i in circularList:
    print(i)

出力:

one
two
three
four
five
one
two
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

関連記事 - Python List