结果的顺序是否来自列表理解?

时间:2009-08-17 04:33:25

标签: python list-comprehension

使用列表推导时,新列表的顺序是否以任何方式得到保证?作为一个人为的例子,列表理解的定义保证了以下行为:

>> a = [x for x in [1,2,3]]
>> a
[1, 2, 3]

同样,保证以下平等:

>> lroot = [1, 2, 3]
>> la = [x for x in lroot]
>> lb = []
>> for x in lroot:
     lb.append(x)
>> lb == la
True

具体来说,这是我对此感兴趣的订单。

3 个答案:

答案 0 :(得分:31)

是的,列表推导保留了原始可迭代的顺序(如果有的话)。 如果原始的iterable是有序的(list,tuple,file等),那就是你在结果中得到的顺序。如果你的iterable是无序的(set,dict等),则无法保证项目的顺序。

答案 1 :(得分:3)

是的,列表是一个序列。序列顺序很重要。

答案 2 :(得分:0)

已经有一段时间了,但是自从我最近自己提出了一个类似的问题,并且需要更多的解释来理解这到底是什么之后,我将加两美分,可能对其他人有所帮助未来! :) 更具体地说,这是关于列表理解操作所产生的值的顺序。


假设您有以下列表:

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

我想使用以下列表理解来四舍五入该列表中的变量:

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

我的问题是,这是否意味着列表理解所产生的顺序如下:

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

我从@ juanpa.arrivillaga那里得到的答复非常好,就是这种情况!