从列表中删除比列表的大多数元素大得多或小得多的元素

时间:2017-05-06 09:59:44

标签: python python-2.7 list list-comprehension

我有一些图像的大小存储为元组列表,如下所示:

(79, 1100)
(51, 1100)
(56, 1100)
(49, 1100)
(47, 1100)
(44, 1100)
(54, 1100)
(15,1100)
(52, 1100)
(115, 1100)
(44, 1100)
(60, 1100)
(51, 1100)
(56, 1100)
(19,1100)
(110,1100)

我想要的是删除第一个尺寸小于/大于(在本例中为15,115,19,110)的所有图像,而不是列表中的大多数元素。在这里我无法定义阈值,因为数字的范围(在第一维中)可以根据我选择的图像的比例变化很大。

1 个答案:

答案 0 :(得分:0)

您可以使用图像尺寸的均值和标准差来构建阈值。 让我们使用numpy来计算这些指标:

import java.util.*;

public class Solution {

    static String timeCompare(String t1, String t2){
        // Complete this function

        String half1 = t1.substring(t1.length()-2); // gets AM/PM value
        String half2 = t2.substring(t2.length()-2);

        String time1 = t1.substring(0, t1.length()-2);
        String time2 = t2.substring(0, t2.length()-2);

        //System.out.println(time1);

        int hour1 = Integer.parseInt(time1.split(":")[0]);
        int hour2 = Integer.parseInt(time2.split(":")[0]);

        int min1 = Integer.parseInt(time1.split(":")[1]);
        int min2 = Integer.parseInt(time2.split(":")[1]);

        if(hour1 == 12) {
            hour1 = 0;
            //System.out.println(hour1);;
        }
        if(hour2 == 12) {
            hour2 = 0;
        }

        //System.out.println(hour1+" , "+hour2);

        if(half1.equals(half2)){
           // System.out.println(1);

            if(hour1 == hour2){

                if(min1 > min2){
                    return "Second";
                } 
                else{
                    return "First";
                }

            }
            else if(hour1 > hour2){
                return "Second";
            }
            else{
                //System.out.println(2);

                return "First";
            }

        }
        else if (half1 == "AM"){
            return "First";
        }
        else{
            return "Second";
        }

    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int q = in.nextInt();
        for(int a0 = 0; a0 < q; a0++){
            String t1 = in.next();
            String t2 = in.next();
            String result = timeCompare(t1, t2);
            System.out.println(result);
        }
    }
}

如果您认为一个标准差对您来说不是一个好估计,您可以轻松地将此指标与不同的内容交换,例如平均值的固定百分比或其他。