首先你要了解Python之禅,一行代码输出“Python之禅”:python-c"importthis""""TheZenofPython,byTimPetersBeautifulisbetterthanugly.Explicititisbetterthanimplicit.Simpleisbetterthancomplex.Complexisbetterthancomplicated.Flatisbetterthannested.Sparseisbetterthandense.Readabilitycounts.Specialcasesaren'tspecialenoughtobreaktherules.Althoughpracticalitybeatspurity.Errorsshouldneverpasssilently.Unlessexplicitlysilenced.Inthefaceofambiguity,refusethetemptationtoguess.Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.Nowisbetterthannever.Althoughneverisoftenbetterthan*right*now.Iftheimplementationishardtoexplain,这是一个不错的想法。如果实现很容易解释,这可能是一个好主意。命名空间是一个很棒的主意——让我们做更多这样的想法!”“”从“Python之禅”中也可以看出,Python提倡原则Beautiful,Explicit,Simple等的ciples。当然,我们接下来要介绍的一行Python可以实现什么有趣的功能,可能违反显式原则。如果大家还有这方面的其他小例子,欢迎大家评论。我会添加到文章中,文章可能会更新很长时间。(1)一行代码启动一个Web服务python-mSimpleHTTPServer8080#python2python3-mhttp.server8080#python3(2)一行代码实现变量值交换a,b=1,2;a,b=b,a(3)一行代码解决FizzBu??zz问题:FizzBu??zz问题:打印1到100的数字,3的倍数打印“Fizz”,5的倍数打印“Buzz”,打印“FizzBu??zz”即既是3的倍数又是5的倍数forxinrange(1,101):print("fizz"[x%3*4:]+"buzz"[x%5*4:]orx)(4)一行代码输出心形print('\n'.join([''.join([('Love'[(x-y)%len('Love')]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0else'')forxinrange(-30,30)])foryinrange(30,-30,-1)]))(5)一行代码输出Mandelbrot图像Mandelbrot图像:图像中的每个位置对应一个复数,公式N=x+y*iprint('\n'.join([''.join(['*'ifabs((lambdaa:lambdaz,c,n:a(a,z,c,n))(lambdas,z,c,n:zifn==0elses(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2else''forxinrange(-80,20)])foryinrange(-20,20)]))(6)一行代码打印九十九乘法表print('\n'.join([''.join(['%s*%s=%-2s'%(y,x,x*y)foryinrange(1,x+1)])forxinrange(1,10)]))(7)一行代码cal计算1-100之间的素数(两个版本)print(''.join([str(item)foriteminfilter(lambdax:not[x%iforiinrange(2,x)ifx%i==0],range(2,101))]))print(''.join([str(item)foriteminfilter(lambdax:all(map(lambdap:x%p!=0,range(2,x))),range(2,101))]))(8)一行代码输出斐波那契数列print([x[0]forxin[(a[i][0],a.append([a[i][1],a[i][0]+a[i][1]]))forain([[1,1]],)foriinrange(30)]])(9)行代码实现快速排序算法qsort=lambdaarr:len(arr)>1andqsort(list(filter(lambdax:x<=arr[0],arr[1:])))+arr[0:1]+qsort(list(filter(lambdax:x>arr[0],arr[1:])))orarr(10)一行代码解决八皇后问题[__import__('sys').stdout.write('\n'.join('.'*i+'Q'+'.'*(8-i-1)foriinvec)+"\n=========\n")forvecin__import__('itertools').permutations(range(8))if8==len(set(vec[i]+iforiinrange(8)))==len(set(vec[i]-iforiinrange(8)))](11)一行代码实现数组的flatten函数:将多维数组转为一维flatten=lambdax:[yforlinxforyinflatten(l)]ifisinstance(x,list)else[x](12)一行代码实现list,有点类似一个ti-functionofthepreviousfunctionarray=lambdax:[x[i:i+3]foriinrange(0,len(x),3)](13)一行代码求解2的数字和的幂1000print(sum(map(int,str(2**1000))))
