Does the for/in loop construct preserve order?

前端 未结 4 1018
谎友^
谎友^ 2021-02-12 11:11

Does an ordinary for/in statement guarantee the list is iterated in order?

my_list = [5,4,3,2]
for i in my_list
    print(i)

That is, is the lo

4条回答
  •  伪装坚强ぢ
    2021-02-12 11:25

    When you iterate over a sequence (list, tuple, etc.), the order is guaranteed. Hashed structures (dict, set, etc.) have their own order -- but for a given structure, the order will be the same each time. If you add or delete an element, the order may then be different.


    Consider the folloing code: I make a set of five elements, and then print it out with four identical for loops. The order is the same. Then I add two elements; this upsets the order.

    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"
    

    Output:

    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 
    

    Note how the original elements are no longer in the same order: "Dinner" now comes after "Apple".

提交回复
热议问题