python-3.x - 有没有一种简单的方法可以循环迭代枚举?

标签 python-3.x loops enums

我有一个存储 4 个季节的枚举类,并希望能够转到下一季。当我走到尽头(FALL)时,我希望它回到第一个(WINTER)。有没有一种简单的方法可以做到这一点,还是我最好只使用列表或其他一些结构。我在网上找到的一些答案似乎有点矫枉过正,所以我很好奇使用枚举是否值得。

from enum import Enum, auto

class Season(Enum):
    WINTER = auto()
    SPRING = auto()
    SUMMER = auto()
    FALL   = auto()
>>> season = Season.SUMMER
>>> season.next()
<Season.FALL: 4>
>>> season.next()
<Season.WINTER: 1>

最佳答案

由于 Enum 已经支持迭代协议(protocol),非常很容易,使用 itertools.cycle :

>>> from itertools import cycle
>>> seasons = cycle(Season)
>>> next(seasons)
<Season.WINTER: 1>
>>> next(seasons)
<Season.SPRING: 2>
>>> next(seasons)
<Season.SUMMER: 3>
>>> next(seasons)
<Season.FALL: 4>
>>> next(seasons)
<Season.WINTER: 1>

关于python-3.x - 有没有一种简单的方法可以循环迭代枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996433/

相关文章:

Python 3 单元测试无法模拟函数内部使用的方法

python - 单元测试 : same test class with mutliple datasets

python - 如何使用 Python 并行读取/处理大文件

python - python中嵌入式循环的多线程

c - 在 C 函数中使用枚举作为参数和返回类型

python-3.x - 如何通过group模式在pandas中填写na

java - 输入验证和再次播放循环JAVA作业时出现问题

C 程序 - 使用 scanf 扫描字符串但从 .txt 文件读取

c# - 为 UI 目的对枚举进行排序

ios - 如何快速创建依赖的通用协议(protocol)