使用列表推导时,新列表的顺序是否以任何方式得到保证?作为一个人为的例子,列表理解的定义保证了以下行为:
>> 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
具体来说,这是我对此感兴趣的订单。
答案 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那里得到的答复非常好,是就是这种情况!