Python不同的结果来自相同的代码

时间:2017-01-22 14:14:25

标签: python python-3.x python-3.6

发生了一件非常奇怪和奇怪的事情。我试图在Compare 1 column of 2D array and remove duplicates Python回答这个问题并且我做了以下回答(我没有发布,因为该问题的一些现有答案非常紧凑和有效)但这是我做的代码:

array = [['abc',2,3,],
        ['abc',2,3],
        ['bb',5,5],
        ['bb',4,6],
        ['sa',3,5],
        ['tt',2,1]]

temp = []
temp2 = []

for item in array:
    temp.append(item[0])

temp2 = list(set(temp))

x = 0
for item in temp2:
    x = 0
    for i in temp:
        if item == i:
            x+=1
        if x >= 2:
            while i in temp:
                temp.remove(i)

for u in array:
    for item in array:
        if item[0] not in temp:
            array.remove(item)

print(array)

代码应该工作,执行请求给定链接的请求者。但我得到两对结果:

[['sa', 3, 5], ['tt', 2, 1]]

并且

[['bb', 4, 6], ['tt', 2, 1]]

为什么同一个编译器上同一个操作系统上的相同代码在运行时会产生两个不同的答案?注意:结果不会交替。它在我上面列出的两个可能输出之间是随机的。

1 个答案:

答案 0 :(得分:3)

在Python中,没有任何特定的顺序,即实现可以自由选择任何顺序,因此每个程序运行可能会有所不同。

您转换为此处的设置:

temp2 = list(set(temp))

对结果进行排序应该会给出一致(但可能不对)的结果:

temp2 = sorted(set(temp))

array的结果。

排序:

temp2 = sorted(set(temp))

array看起来像这样:

[['bb', 4, 6], ['tt', 2, 1]]

反转:

temp2 = sorted(set(temp), reverse=True)

array看起来像这样:

[['sa', 3, 5], ['tt', 2, 1]]