我想根据每个内部列表的总和对包含列表的列表进行排序。
这是我目前的片段
vectors = []
for i in range(0, 10):
vectors.append(generate_vector()) # generate_vector() works, creates a list
for vector in vectors:
coin_list = findbest(vector) # findbest(vector) outputs a list
print coin_list, fitness(coin_list) # fitness(coin_list) gives the sum of coin_list
我想根据适应度(coin_list)的结果从低到高对矢量进行排序。最好的方法是什么?
答案 0 :(得分:11)
您可以在排序函数中使用key
参数
data = [[1,2,3], [14, 7], [5, 6, 1]]
print sorted(data, key=sum)
<强>输出强>
[[1, 2, 3], [5, 6, 1], [14, 7]]
如果您想进行排序
data = [[1,2,3], [14, 7], [5, 6, 1]]
data.sort(key=sum)
print data
<强>输出强>
[[1, 2, 3], [5, 6, 1], [14, 7]]
修改以防万一,如果您想知道如何按降序排序,可以使用reverse
这样的参数
data.sort(key=sum, reverse=True)
sorted(data, key=sum, reverse=True)
所以,在你的情况下
vectors = [generate_vector() for i in range(0, 10)]
print sorted([findbest(vector) for vector in vectors], key=sum)
多数民众赞成。
答案 1 :(得分:3)
vectors = []
for i in range(0, 10):
vectors.append(generate_vector()) # generate_vector() works, creates a list
for vector in vectors:
coin_list = findbest(vector) # findbest(vector) outputs a list
print sorted(fitness(coin_list), key=sum)