【发布时间】:2011-12-22 16:58:29
【问题描述】:
我正在为一个软件编写脚本,但它并不能真正让我直接访问我需要的数据。相反,我需要询问我需要的每条信息,并建立一个我得到的数据列表。由于各种原因,我需要对列表进行排序。只需构建一次列表,然后对其进行排序,然后对其进行处理,这非常容易。但是,我认为将所有内容一次运行会更快,而不是构建列表然后对其进行排序。
所以,目前我基本上得到了这个:
my_list = []
for item in "query for stuff":
my_list.append("query for %s data" % item)
my_list.sort()
do_stuff(my_list)
“查询东西”位是与软件的查询接口,它会给我一个可迭代的。 my_list 需要包含来自所述可迭代内容的数据列表。通过这样做,我正在查询第一个列表,然后循环遍历它以提取数据并将其放入 my_list。那我整理一下。最后,我正在使用 do_stuff() 方法对其进行处理,该方法将遍历它并对每个项目进行处理。
问题是我不能在排序之前对其进行 do_stuff() 操作,因为列表顺序很重要,原因有很多。我认为我不能避免循环遍历列表两次——一次是构建列表,一次是对其中的每个项目进行处理,因为我们不会提前知道最近在位置 N 添加的项目是否会在我们添加下一个项目之后留在位置 N ——但是以排序的方式插入每个项目似乎更干净,而不是仅仅将它们附加到最后。有点像这样:
for item in "query for stuff":
my_list.append_sorted(item)
是否值得费心尝试这样做,还是我应该坚持构建列表,然后对其进行排序?
谢谢!
【问题讨论】:
-
对于那些想要建立一个列表并在一行中排序的人(例如,使用列表理解)使用
my_list = sorted( here_is_your_list_comprehension )。 cfstackoverflow.com/questions/11433886/…