Is the order of results coming from a list comprehension guaranteed?

后端 未结 3 1344
误落风尘
误落风尘 2021-01-01 10:53

When using a list comprehension, is the order of the new list guaranteed in any way? As a contrived example, is the following behavior guaranteed by the definition of a list

相关标签:
3条回答
  • 2021-01-01 11:04

    Yes, the list comprehension preserves the order of the original iterable (if there is one). If the original iterable is ordered (list, tuple, file, etc.), that's the order you'll get in the result. If your iterable is unordered (set, dict, etc.), there are no guarantees about the order of the items.

    0 讨论(0)
  • 2021-01-01 11:08

    It has been a while, but since I came up with a similar question myself recently, and needed a bit more explanation to understand what this comes down to exactly, I'll add my two cents, may it help someone else in the future! :) More specifically this is about the order of values resulting from a list comprehension operation.


    Imagine you have the following list:

    list_of_c = [a, b, c, d, e]
    

    I want to round the variables in that list using the following list comprehension:

    list_of_d = [round(value, 4) for value in list_of_c]
    

    My question was whether this would mean that the order resulting from the list comprehension would be the following:

    list_of_d = [round_a, round_b, round_c, round_d, round_e]
    

    And the answer I received very kindly from @juanpa.arrivillaga , was that indeeded, YES that was the case!

    0 讨论(0)
  • 2021-01-01 11:26

    Yes, a list is a sequence. Sequence order is significant.

    0 讨论(0)
提交回复
热议问题