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 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