38

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

>> 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

具体来说,这是我在这里感兴趣的顺序。

4

3 回答 3

41

是的,列表推导保留了原始迭代的顺序(如果有的话)。如果原始可迭代对象是有序的(列表、元组、文件等),那么这就是您在结果中得到的顺序。如果您的可迭代对象是无序的(set、dict 等),则无法保证项目的顺序。

于 2009-08-17T04:40:01.690 回答
3

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

于 2009-08-17T04:40:22.783 回答
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 那里得到了非常友好的回答,确实如此,的,就是这样!

于 2020-12-04T13:07:08.403 回答