use*_*911 5 python sorting list
我想根据每个内部列表的总和对包含列表的列表进行排序.
这是我目前的片段
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
Run Code Online (Sandbox Code Playgroud)
我想根据fit(coin_list)从低到高的结果对向量进行排序.最好的方法是什么?
the*_*eye 11
您可以key在排序函数中使用param
data = [[1,2,3], [14, 7], [5, 6, 1]]
print sorted(data, key=sum)
Run Code Online (Sandbox Code Playgroud)
产量
[[1, 2, 3], [5, 6, 1], [14, 7]]
Run Code Online (Sandbox Code Playgroud)
如果你想在里面排序
data = [[1,2,3], [14, 7], [5, 6, 1]]
data.sort(key=sum)
print data
Run Code Online (Sandbox Code Playgroud)
产量
[[1, 2, 3], [5, 6, 1], [14, 7]]
Run Code Online (Sandbox Code Playgroud)
编辑以防万一,如果您想知道如何按降序排序,您可以使用这样的reverse参数
data.sort(key=sum, reverse=True)
sorted(data, key=sum, reverse=True)
Run Code Online (Sandbox Code Playgroud)
所以,在你的情况下
vectors = [generate_vector() for i in range(0, 10)]
print sorted([findbest(vector) for vector in vectors], key=sum)
Run Code Online (Sandbox Code Playgroud)
而已.