Python提取列表得分更高

时间:2017-04-21 19:38:18

标签: python sorting

您好我正在完成这项任务。

我想用更好的分数提取列表的一半(越小越好)。 例如:

s=[[1,2,3],[1,3,2],[2,1,3,[3,1,2],[3,2,1],[2,3,1]]

列表s的对应分数是

score=[13,14,24,28,17,17]

我的愿望输出是: ss应该只包含3个

ss =[[1,2,3],[1,3,2],[3,2,1]]

ss =[[1,2,3],[1,3,2],[2,3,1]]。因为最后两个列表具有相同的分数

2 个答案:

答案 0 :(得分:0)

为了实现这一目标,您可以执行以下步骤:

  1. 按升序排列scores列表并获得最低n分数
  2. 根据s列表中n列表中scores个最小数字的出现次数,从list.index(..)列表中获取元素
  3. 下面是使用列表理解>>> s=[[1,2,3],[1,3,2],[2,1,3],[3,1,2],[3,2,1],[2,3,1]] >>> score=[13,14,24,28,17,17] >>> smallest_num_count = 3 # count of desired numbers # Get lowest three scores v slice list from the start >>> smallest_scores = sorted(score)[:smallest_num_count] # ^ sorts the `score` list in ascending order # v returns index of the first occurrence of the # v `i` element in `score` lsit >>> [s[score.index(i)] for i in smallest_scores] [[1, 2, 3], [1, 3, 2], [3, 2, 1]] 方法实现它的示例代码(步骤被提及为注释):

    cleartool lsstream -fmt "%n" -cview
    

答案 1 :(得分:0)

尝试:

[i for i, j in sorted(zip(s, score), key=lambda x: x[1])[:3]]