输出顺序随运行而变化

时间:2019-02-12 12:03:03

标签: python tuples yield

我有一个简单的功能:

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)

  

sys.version:3.6.5(v3.6.5:f59c0932b4,2018年3月28日,17:00:18)[MSC   v.1900 64位(AMD64)]

0 个答案:

没有答案