5

我想根据每个内部列表的总和对包含列表的列表进行排序。

这是我得到的当前片段

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)的结果从低到高对向量进行排序。最好的方法是什么?

4

2 回答 2

11

您可以key在 sorted 函数中使用参数

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)

就是这样。

于 2013-11-09T05:02:56.663 回答
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)
于 2013-11-09T05:02:16.357 回答