运行此代码时,结果会按预期更改,因为集合是无序的:
my_set_1 = {'a','b','c',}
print([i for i in my_set_1])
也就是说,多次运行会给出不同的列表,例如
['a', 'c', 'b']
['b', 'a', 'c']
['a', 'c', 'b']
['c', 'b', 'a']
等等
(注意:如果您没有,则可能会得到相同的结果,如PYTHONHASHSEED=random
评论中所建议的那样。此外,如果您使用控制台来复制它,请确保Rerun每次运行代码时都使用控制台。)
然而,当将上面的代码放在 for 循环中时,结果相当令人惊讶:
for i in range(10):
my_set_1 = {'a','b','c',}
print([i for i in my_set_1])
# Prints:
# ['a', 'c', 'b']
# ['a', 'c', 'b']
# ['a', 'c', 'b']
# ....
单次运行 for 循环将打印相同的列表。重新运行 for 循环可以打印不同的列表(例如['c', 'b', 'a']
),但仍会打印 10 次而不会更改。
为什么不改变?