代码之家  ›  专栏  ›  技术社区  ›  MSalters

输出顺序随运行而变化[重复]

  •  0
  • MSalters  · 技术社区  · 6 年前

    我有一个简单的函数:

    def foo(inp):
        i = 0
        while (i < len(inp)):
            yield {i,inp[i]}
            i = i+1
    
    for x in foo(("a", "b", "c")):
        print(x)
    

    我想打印出来

    {0, 'a'}
    {1, 'b'}
    {2, 'c'}
    

    有时 印刷品

    {0, 'a'}
    {1, 'b'}
    {'c', 2}
    

    为什么要交换最后一个元组的成员?

    更奇怪的是,在输入列表中添加“d”,我看到了三个不同的输出。要么所有输出都正常,我只得到 {'d',3) 换了,或者我两个都换了 {'c',2) {'d',3)

    系统版本:3.6.5(v3.6.5:f59c0932b4,2018年3月28日,17:00:18)[MSC v、 1900 64位(AMD64)]

    0 回复  |  直到 6 年前