在 Python 中使用循环列表
常规链表有一个根节点,其中每个节点都有一个指向下一个节点的指针和一段数据,除了最后一个节点,没有下一个节点(因此保存 Null 值)告诉我们这是最后一个节点 . 但是,在循环链表中,最后一个节点有一个指向链表中第一个节点的指针。
因此,循环链表是结构化的链表,使得所述结构内的所有节点形成一个圆圈。 这种节点不能为None的线性动态数据结构; 最后一个节点连接到第一个节点,因此每个节点都可以通向前一个或下一个,等等。
通常,迭代器对象允许我们在列表或字典数据结构中从一个元素移动到另一个元素。 使用循环列表,每个节点之间的连接允许使用内置函数。
本文讨论在 Python 中以原生方式或使用模块实现和使用循环列表。
使用 itertools.cycle 在 Python 中使用循环列表
Python 有一个名为 itertools 的内置模块,它支持带有迭代器和函数循环的序列。 在这个模块中,迭代器(方法)帮助制定高效的系统来循环不同的上下文,从短输入序列到组合场景。
然而,更重要的是使用 cycle()
迭代器,它是一个无限迭代器,它接受一个列表并对其进行无限迭代。
这是通过创建一个迭代器来实现的,该迭代器返回其元素并从可迭代对象中复制每个元素。 之后,它在可迭代完成后返回保存的副本中的项目。
要使用模块 itertools 和方法 cycle()
,我们使用这个导入语句:
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 语句的典型函数不同,我们在生成器中使用 yield 语句。
与 return 语句不同,yield 语句暂停函数,保存其所有环境变量(或状态),并在随后的调用中携带一个。 此外,一个生成器函数可以包含一个 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
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串