Python处理数据,python大法好

  由于找实习,要学习python处理数据,python连接mysql,python读写文件,python读写xlsx文件,这些只要引入了相关的包,就非常容易,处理过程非常清晰。模块如果封装的好,没怎么学过编程的人也很容易上手。

  就把python当做自行车用,用脚本处理一些重复性的工作非常便捷,但程序就是写不长,但是这些脚本已经能够完成我们的工作了。另外,pycharm真的很好用,不仅体现在代码自动提示,还在安装外部库时非常方便。

  看一下python写的快速排序:

def quicksort(arr):
	if len(arr) < 2:
		return arr
	else:
		min = [x for x in arr[1:] if x < arr[0]]
		max = [x for x in arr[1:] if x >= arr[0]]
		return quicksort(min) + [arr[0]] + quicksort(max)

  看一下java写的快速排序:

public class Main{
  public static void main(String[] args) throws IOException{
        InputStreamReader in = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(in);

        int num = Integer.parseInt(br.readLine());
        int[] arr = new int[num];

        String[] res = br.readLine().split(" ");
        for (int i = 0; i < num; i++) {
            arr[i] = Integer.parseInt(res[i]);
        }

        quickSort(arr, 0, num - 1);

        for (int i = 0; i < num; i++) {
            System.out.print(arr[i] + " ");
        }
        br.close();

    }
    //闫总快排模板 v.v
    public static void quickSort(int[] q, int l, int r) {
        if (l >= r) return;
        int x = q[l+r>>1];

        //Define positions of two pointers
        int i = l - 1;
        int j = r + 1;

        while (i < j) {
            do i++; while (q[i] < x);
            do j--; while (q[j] > x);
            //do Swap
            if (i < j) {
                int temp = q[i];
                q[i] = q[j];
                q[j] = temp;
            }
        }

        quickSort(q, l, j);
        quickSort(q, j + 1, r);
    }
}

作者:unipie
链接:https://www.acwing.com/solution/content/5996/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  看看java写的,i++, j++,自己都蒙圈了,c++也要考虑边界条件。

  为什么python能够这么简单呢?在于python中数组强大的抽象。java/c++也可以开辟额外空间,不考虑边界问题,但是代码就变长了。python帮忙我们屏蔽了底层操作,提供了很好的抽象。在快速开发的时代,python的这用优势还是很明显的。

  

 

参考博客:快速排序算法的简单理解

posted @ 2018-04-02 19:48  懂得了才能做一些改变  阅读(296)  评论(2编辑  收藏  举报