普通的for/in语句是否保证列表按顺序迭代?
my_list = [5,4,3,2]
for i in my_list
print(i)
Run Code Online (Sandbox Code Playgroud)
也就是说,上面的循环是否保证5 4 3 2
每次打印?
use*_*ica 36
一个for
循环的迭代顺序由任何物体它的迭代控制.迭代有序集合就像list
保证迭代列表顺序中的元素一样,但迭代无序集合就像set
几乎没有订单保证.
当您遍历序列(列表,元组等)时,将保证顺序。散列结构(字典,集合等)具有自己的顺序-但是对于给定的结构,每次的顺序都相同。如果添加或删除元素,则顺序可能会有所不同。
考虑下面的代码:我制作了一组五个元素,然后使用四个相同的for循环将其打印出来。顺序是一样的。然后添加两个元素;这打乱了订单。
my_set = set(["Apple", "Banana", "Casaba", "Dinner", "Eggplant"])
for food in my_set:
print food,
print "\n"
for food in my_set:
print food,
print "\n"
for food in my_set:
print food,
print "\n"
for food in my_set:
print food,
print "\n"
my_set.add("Fruitcacke")
my_set.add("Grape")
for food in my_set:
print food,
print "\n"
Run Code Online (Sandbox Code Playgroud)
输出:
Casaba Dinner Apple Eggplant Banana
Casaba Dinner Apple Eggplant Banana
Casaba Dinner Apple Eggplant Banana
Casaba Dinner Apple Eggplant Banana
Casaba Fruitcacke Grape Apple Dinner Eggplant Banana
Run Code Online (Sandbox Code Playgroud)
请注意,原始元素不再具有相同的顺序:“晚餐”现在位于“苹果”之后。