基本上,我需要订购2D阵列。基因是由8个列表组成的数组,所有列表包含8个项目,所有项目都是浮点数。这是针对某种进化模拟器的,因此是“基因”。我当前的解决方案是这样的:
scores = []
[scores.append(score(x)) for x in genes]
unsorted = genes
genes = [unsorted[0]]
for y in range(7):
for x in range(len(genes)):
if score(unsorted[y+1]) >= score(genes[x]):
genes.insert(x, unsorted[y+1])
break
我有所有分数的列表,我保存了一个名为“未排序”的“基因”副本,并将基因设置为它包含的第一项。下面的嵌套循环应无排序,将每个项目通过“ x”循环,一旦发现得分的第一项等于或小于其自身,则将其插入“基因”。我以为这会行得通,但由于某种原因,它会返回随机大小的列表,例如3、2和5甚至16。如果您有更有效的方法或pythonic的方法来执行此操作,或者只有一种有效的方法,请提供帮助!
最佳答案
那就是排序的目的。
genes = sorted(genes, key=score)