在 Python 中重新定义输入函数,以便每次调用时从预定的值列表中生成一个值

问题描述 投票:0回答:1

是否有一种干净的“Pythonic”方法可以在 Python 中编写输入替换函数,每次调用时都会从预定的输入值列表中生成一个值?

raw_data = [8, 2, 1]
c = 0


def input():
    global c
    c += 1
    return raw_data[c - 1]


for _ in range(3):
    print(input())

这确实并且预计会输出:

8
2
1

直观上

yield
似乎应该是解决方案的一部分,但我无法理解如何将其实现为
input
替代品。

python yield
1个回答
0
投票

我一直在使用的两种方法:

input = iter([8, 2, 1]).__next__
input = [8, 2, 1][::-1].pop

当然,如果您可以倒着写列表,则不需要

[::-1]

如果您还需要列表用于其他用途,则可以使用第一个解决方案,但将列表存储在额外的变量中。

© www.soinside.com 2019 - 2024. All rights reserved.