急!!!!python对name进行排序,不能用内建的sort函数

Python05

急!!!!python对name进行排序,不能用内建的sort函数,第1张

用sorted函数啊

def my_sorted(name1, name2):

return name1 >name2

names = ["afa","dfdf"]

sorted(names, my_sorted)

排序函数自己写,我瞎写的。py2.7的版本

你可以看sorted的接口说明,支持cmp参数,就是一个比较函数。默认是none的。一般问题都可以通过文档找到结果的,希望对你有用

简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。易学:Python极其容易上手,因为Python有极其简单的说明文档。速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C写的,运行速度非常快。高级语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。首先我们来听听图灵奖获奖得主,Allan Perlis,说过的话,“如果一门语言没有改变你的编程思维,那么它不值得你去学习”。如果这么说,我们大学的时候,学习了c,c++,java,C#,算是值得学习么?很多时候是不值得,我觉得我们大学的课程就是用java,c#,c++把"C程序设计"又上了一遍. 这是因为,学校的老师会C和java之类的,所以要跟着规矩开这门课,(这也就是为什么,许多学校还在教vb,),这也就是为什么,你所以为的一样就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所谓的不一样就是用C有指针,java没有,这就是为什么教育是失败的,这也就是为什么,我目前认识的几个编程大牛,都不是计算机专业毕业的... python的优点:简单 我所说的简单,是相比于象C和C++这样的语言,你为了编程,要学习许多偏底层的东西. 在比如,你在学习一个新的编程范式,或者想要马上做个例子看看,试验某个API,如果你是写java的,你不得不去写一个main,写一些构造,即使有IDE这样的东西,能够为你带来代码生成器,而我做得就是写一段“脚本”,或者打开python交互式解释器就行了。这在写算法时就能够表现出来,比如我要写一个快速排序:如果用C语言写:void q_sort(int numbers[], int left, int right) { int pivot, l_hold, r_holdl_hold = leftr_hold = rightpivot = numbers[left]while (left <right) { while ((numbers[right] >= pivot) &&(left <right)) right--if (left != right) { numbers[left] = numbers[right]left++} while ((numbers[left] <= pivot) &&(left <right)) left++if (left != right) { numbers[right] = numbers[left]right--} } numbers[left] = pivotpivot = leftleft = l_holdright = r_holdif (left <pivot) q_sort(numbers, left, pivot-1)if (right >pivot) q_sort(numbers, pivot+1, right)} 为什么这么长?因为除了表达快速排序的思想,你还要写数组分区,swap交换,for i,j的多一少一,都可能出现错误.... def qsort(lis): if len(lis) == 0: return [] else: low = [] hig = [] for x in lis[1:]: if x <lis[0]: low.append(x) else: hig.append(x) low = qsort(low) hig = qsort(hig) return low+lis[:1]+hig 当然高手可以写的更短: def qsort(L): if not L: return [] return qsort([x for x in L[1:] if x<L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]]) 因为动态语言,在使用上,比静态语言要活,你可以自由的表达,但是如果是用java,C++这样的静态语言,想要表达自己的思想, 就没有那么容易. 学习曲线python很值得你去深入研究,因为你玩得越熟,它给你所带来的回报越高,人们常说,java初学者和java大师写出的代码差不多,但是python初学者,python高手写出来的代码,简直就是天壤之别。就拿简单的阶乘函数吧. 新手可以这么写: def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) 高手这么写: f = lambda x: x and x * f(x - 1) or 1 FP函数式编程 python是面向对象的,也可以面向过程但下面我们用“函数式编程”来谈谈它的好处下面是一个计算器的例子,《大话设计模式》的第一章,就是使用这个例子来阐述oop和设计模式的强大,首先一种被认为糟糕的写法是这样的: (以下代码来自啄木鸟社区,如果有版权问题,请告诉我,我马上删除)public class Calculator { static public double Foo(char op, double x, double y) { switch(op) case '+': return x+ybreakcase '-': return x-ybreakcase '*': return x*ybreakcase '/': return x/ybreakdefault: throw new Exception("?") } } 恩,不可重用,不可维护,不可扩展,不够灵活。那些相信“设计模式”和java的狂热分子,要开始改这个代码了. 先来一个接口:python已经算很好学的编程语言了,这个都不愿意学,我敢说这世界上没有哪种语言能让你耐下心来学了。一句话,你可以不学,没人强迫你。