Python에서 순환 목록 사용

Olorunfemi Akinlua 2023년6월21일
  1. itertools.cycle을 사용하여 Python에서 순환 목록 사용
  2. 제너레이터를 사용하여 Python에서 순환 목록 사용
Python에서 순환 목록 사용

일반 연결 목록에는 각 노드에 다음 노드에 대한 포인터가 있는 루트 노드와 다음 노드가 없는 마지막 노드를 제외한 데이터 조각이 있습니다(그래서 Null 값 보유). 마지막 노드. 그러나 순환 연결 목록에서 마지막 노드에는 목록의 첫 번째 노드에 대한 포인터가 있습니다.

따라서 순환 연결 목록은 해당 구조 내의 모든 노드가 원을 형성하도록 구성된 연결 목록입니다. 노드가 None이 될 수 없는 이 선형 및 동적 데이터 구조; 마지막 노드가 첫 번째 노드에 연결되어 모든 노드가 이전 또는 다음으로 연결될 수 있습니다.

일반적으로 반복자 개체를 사용하면 목록 또는 사전 데이터 구조 내에서 한 요소에서 다른 요소로 이동할 수 있습니다. 순환 목록을 사용하면 각 노드 간의 연결을 통해 특히 내장 함수를 사용할 수 있습니다.

이 문서에서는 기본적으로 또는 모듈을 사용하여 Python에서 순환 목록을 구현하고 사용하는 방법에 대해 설명합니다.

itertools.cycle을 사용하여 Python에서 순환 목록 사용

Python에는 반복자와 기능적 루핑이 있는 시퀀스를 활성화하는 itertools라는 내장 모듈이 있습니다. 이 모듈 내에서 반복자(메서드)는 짧은 입력 시퀀스에서 조합 시나리오에 이르기까지 다양한 컨텍스트에서 반복되는 효율적인 시스템을 작동하는 데 도움이 됩니다.

그러나 사용하는 것이 더 중요한 것은 cycle() 반복자입니다. 이 반복자는 목록을 가져와 무한히 반복하는 무한 반복자입니다.

이는 해당 요소를 반환하고 iterable에서 각 요소를 복사하는 반복자를 생성하여 발생합니다. 그런 다음 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 루프를 사용하는 대신 반복자를 하나씩 쉽게 진행할 수 있습니다.

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

제너레이터를 사용하여 Python에서 순환 목록 사용

생성기를 사용하면 반복할 수 있는 반복자를 반환하는 반복 및 함수를 만들 수 있습니다. return 문을 사용하는 일반적인 함수와 달리 generators에서 yield 문을 사용합니다.

return 문과 달리 yield 문은 함수를 일시 중지하고 모든 환경 변수(또는 상태)를 저장한 다음 후속 호출과 함께 전달합니다. 또한 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>

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