このコードを実行すると、セットは順序付けされていないため、結果は期待どおりに変化します。
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 ループを 1 回実行すると、同じリストが出力されます。for ループを再実行すると、別のリスト (例: ['c', 'b', 'a']
) を出力できますが、変更せずに 10 回出力されます。
なぜ変わらないのですか?