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 loop above guaranteed to print 5 4 3 2
every time?
The for...in loop will traverse all integer keys before traversing other keys, and in strictly increasing order, making the behavior of for...in close to normal array iteration.
3) The enhanced for loop can only iterate in incremental order. we cannot configure it to go in decrement.
Yes, the order of elements in a python list is persistent.
A for
loop's iteration order is controlled by whatever object it's iterating over. Iterating over an ordered collection like a list
is guaranteed to iterate over elements in the list's order, but iterating over an unordered collection like a set
makes almost no order guarantees.
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".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With