rat_nreads = sorted([(self.markers2lens[m],n) for m,n in self.markers2nreads.items()],key = lambda x: x[1])
rat_nreads, removed = [], []
我看到了这段代码,真的很困惑;如果要将rat_nreads
分配给一个空列表,那么将self.markers2nreads.items()
分配给排序列表有什么意义呢?第一行是否实际以任何方式改变了overflow: auto;
?
答案 0 :(得分:5)
不,sorted
会创建一个新列表。
所以你发布的代码没有意义。
第一行是否真的以任何方式改变了
self.markers2nreads.items()
?
它无法改变,因为你有一个使用它的列表理解。
注意:
sorted
是没有意义的。 sorted(((self.markers2lens[m],n) for m,n in self.markers2nreads.items()),key = lambda x: x[1])
效率更高 - 使用生成器,没有临时列表。dict.iteritems()
,因为dict.items()
也会创建一个不需要的列表。要对列表进行排序,需要这样做:
_list = [(self.markers2lens[m], n) for m, n in self.markers2nreads.iteritems()]
_list.sort(key=lambda x: x[1])
答案 1 :(得分:-1)
项目保留在内存中的相同位置,但会创建一个新列表:
protected void onPostExecute(String result){
//Code for fragment A to show data in UI
// code for showing fragment B
}
希望这会有所帮助..