在 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
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
Django 返回 JSON
发布时间:2023/05/04 浏览次数:106 分类:Python
-
在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。
在 Django 中创建对象
发布时间:2023/05/04 浏览次数:59 分类:Python
-
本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。
在 Django 中为多项选择创建字段
发布时间:2023/05/04 浏览次数:75 分类:Python
-
在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。