在循环中使用dict()返回多个变量

3 投票
1 回答
587 浏览
提问于 2025-04-18 03:13

我已经修改了之前的部分,下面这条线以下的内容已经回答过了,现在不再适用:

def foo():

    x = dict()
    i = 0
    while i < 10:
        x[i] = i*2
        i + = 1
        yield x[i]

我该如何在一个新函数中调用 x[i] 的特定实例?



def foo():

    x = dict()
    i = 0
    while i < 10:
        x[i] = i*2
        i + = 1
        return x[i]

我希望这个能返回 x[1], x[2], x[3]...x[10],但现在它只返回最后一个变量。我想这样做的原因是因为在我的实际代码中,我不知道循环会执行多少次。

def main():

    variable = foo()
    print variable

我只是用这个来证明我得到了某些值。

1 个回答

4

为此,可以考虑使用 yield 表达式:

def foo():
    x = dict()
    i = 0
    while i < 10:
        x[i] = x*2
        i += 1
        yield x[i]

for i in foo():
    print i

正如 @Ismail 所说,应该是 i += 1 而不是 x += 1

另外,x*2 是想干嘛呢?你是想说 i*2 吗?

使用 yield 表达式的例子

def next_one(i,n):
    while i < n:
        yield i
        i += 1

>>> for i in next_one(1,10):
...     print i
...
1
2
3
4
5
6
7
8
9

[对问题更新的回答]

你可以用 next() 操作符来做类似的事情:

def next_one(i,n):
    while i < n:
        yield i
        i += 1

def main(variable):
    print next(variable)

variable = next_one(1,10)
main(variable)
main(variable)
main(variable)

[OUTPUT]
1
2
3

演示链接: http://repl.it/R6J

撰写回答