【问题标题】:Return multiple variables in a loop using dict()使用 dict() 在循环中返回多个变量
【发布时间】:2014-06-02 13:32:29
【问题描述】:

我已经编辑了上一部分,以下行下的任何内容都已得到回答,现在已经过时了:

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

我只是用它来向自己证明它返回了一些值

【问题讨论】:

  • 出于好奇,这应该做什么? x*2x = dict() 没有意义...
  • @sshashank124 我用 x 修复了(愚蠢的)错误并且产量有效!如何在新函数中调用每个单独的值?
  • “新函数中的每个单独值”是什么意思?
  • @sshashank124 我更新了我的主要帖子,也许这将有助于解释我想说的更好一点。假设我想在另一个函数中使用 x[1],我将如何在另一个函数中调用该特定变量?
  • @sshashank124 是的,您已经完全回答了我的问题,我的程序现在正在运行。非常感谢!我按了向上箭头,我只是将您的答案标记为“已接受”。我不知道复选标记会做什么,然后我看到你提到它并立即理解。再次感谢

标签: python loops for-loop dictionary return


【解决方案1】:

为此,请考虑使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2022-11-15
    • 2013-09-03
    • 2014-09-02
    • 2019-09-06
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多